2012-01-06 3 views
1

Я пытался найти решение для этого за последние пару часов.Вывести на передний план ключ, имеющий пользовательское значение - многомерный массив

У меня есть этот многомерный массив:

Array 
(
    [0] => stdClass Object 
     (
      [id] => 128 
      [itemID] => 27 
      [attribute] => xxx 
     ) 

    [1] => stdClass Object 
     (
      [id] => 129 
      [itemID] => 27 
      [attribute] => xxx 
     ) 

    [2] => stdClass Object 
     (
      [id] => 130 
      [itemID] => 27 
      [attribute] => xxx 
     ) 

    [3] => stdClass Object 
     (
      [id] => 131 
      [itemID] => 27 
      [attribute] => xxx 
     ) 

    [4] => stdClass Object 
     (
      [id] => 132 
      [itemID] => 27 
      [attribute] => xxx 
     ) 

    [5] => stdClass Object 
     (
      [id] => 133 
      [itemID] => 27 
      [attribute] => yyy 
     ) 

    [6] => stdClass Object 
     (
      [id] => 134 
      [itemID] => 27 
      [attribute] => xxx 
     ) 

) 

Как вы можете видеть OBJ. 5 имеет ключ атрибута «yyy». Я хотел бы представить на передний план этот объект, который содержит ключ атрибута «yyy», как повторный порядок, поэтому, когда i foreach, результат yyy будет первым.

Я пробовал с различными фрагментами, найденными в Интернете, но не смог найти тот, который поможет мне.

ответ

1

Учитывая ваш массив выше:

function sortMyArray($item1, $item2) { 
    $result = 0; 
    if ($item1->attribute == 'yyy') { 
     $result = -1; 
    } 
    else if ($item2->attribute == 'yyy') { 
     $result = 1; 
    } 
    return $result; 
} 

usort($yourArray, "sortMyArray"); 
+0

@SergeS получил правильный ответ первым. usort - это путь. – davidethell

+0

спасибо! – MariusH

0

увидеть это - http://www.php.net/manual/en/function.usort.php, может помочь вам

так же сортировать массив и использовать пользовательскую функцию, которая сравнивает, если атрибут является то, что вы хотите (и возвращать -1 для его, как $ а и 1 для его как $ б, 0 в противном случае)

+0

большое спасибо !! – MariusH

Смежные вопросы