У меня этот массив
Array ( [data] => Array ( [0] => Array ( [id] => 1293005125 [viewed] => TRUE [active] => TRUE [time] => December 22, 2010 13:00 hours [timestamp] => 1293006034 [initial_timestamp] => 1293005125 [user] => administrator ) [1] => Array ( [mid] => 1293001908 [viewed] => TRUE [active] => TRUE [time] => December 22, 2010 13:00 hours [timestamp] => 1293001908 [initial_timestamp] => 1293001908 [user] => administrator ) [2] => Array ( [mid] => 1293009999 [viewed] => TRUE [active] => TRUE [time] => December 22, 2010 13:00 hours [timestamp] => 1293009999 [initial_timestamp] => 1293009999 [user] => administrator ) [3] => Array ( [mid] => 1293006666 [viewed] => TRUE [active] => TRUE [time] => December 22, 2010 13:00 hours [timestamp] => 1293006666 [initial_timestamp] => 1293006666 [user] => administrator ) [4] => Array ( [mid] => 1293005125 [viewed] => TRUE [active] => TRUE [time] => December 22, 2010 13:00 hours [timestamp] => 1293006125 [initial_timestamp] => 1293005125 [user] => administrator2 ) )
Теперь я хотел бы отсортировать этот массив [mid]
Как мне это сделать?
В настоящее время я сортирую это в цикле foreach
Там должен быть лучший путь
EDIT Я надеялся вывести что-то вроде
[mid] key => array value
благодаря
Вы можете использовать функцию usort .
function cmp($a, $b) { return $a["mid"] - $b["mid"]; } usort($arr, "cmp");
Видеть это
Другое решение использует array_multisort
<?php // Obtain a list of columns foreach ($data as $key => $row) { $mid[$key] = $row['mid']; } // Sort the data with mid descending // Add $data as the last parameter, to sort by the common key array_multisort($mid, SORT_DESC, $data); ?>
Недавно я ответил на этот вопрос гораздо более способным образом в «окончательной» теме по сортировке многомерных массивов. Ниже приведен пример старых версий PHP (5.2 и более ранних); в то время как концепция звучит, в наши дни есть намного лучшие способы делать вещи. Вместо этого прочитайте ответы на другой вопрос.
usort
существует именно для этой ситуации. Если вам также нужны ключи для сохранения, соответствующей функцией будет uasort
.
Например:
usort($array, create_function('$a, $b', 'if ($a["mid"] == $b["mid"]) return 0; return ($a["mid"] < $b["mid"]) ? -1 : 1;'));
Конечно, если вы не возражаете, вы можете правильно объявить функцию сравнения:
function compareMid($a, $b) { if ($a['mid'] == $b['mid']) { return 0; } return ($a['mid'] < $b['mid']) ? -1 : 1; }
И используйте его вот так:
usort($array, 'compareMid');
Все это в документации.