Как отсортировать многомерный массив с помощью определенного ключа?

Это должно быть очень просто, но каков путь для этого. Я хочу сортировать многомерный массив с помощью ключа, например:

Array ( [0] => Array ( [iid] => 1 [invitee] => 174 [nid] => 324343 [showtime] => 2010-05-09 15:15:00 [location] => 13 [status] => 1 [created] => 2010-05-09 15:05:00 [updated] => 2010-05-09 16:24:00 ) [1] => Array ( [iid] => 1 [invitee] => 220 [nid] => 21232 [showtime] => 2010-05-09 15:15:00 [location] => 12 [status] => 0 [created] => 2010-05-10 18:11:00 [updated] => 2010-05-10 18:11:00 )) 

Скажем, я хочу сортировать это по [статусу], как бы я это сделал? Заранее спасибо!

Solutions Collecting From Web of "Как отсортировать многомерный массив с помощью определенного ключа?"

 //define a comparison function function cmp($a, $b) { if ($a['status'] == $b['status']) { return 0; } return ($a['status'] < $b['status']) ? -1 : 1; } usort($array, "cmp"); 

Это должно делать то, что вы хотите, вы можете изменить функцию сравнения для сортировки по любому ключу, который вы хотите.

Попробуйте следующее: Использование array_multisort

 $sort = array(); foreach($your_array as $k=>$v) { $sort['status'][$k] = $v['status']; } array_multisort($sort['status'], SORT_DESC, $your_array); echo "<pre>"; print_r($your_array); 

Ссылка: http://php.net/manual/en/function.array-multisort.php

Функция usort – это то, что вы ищете:

 <?php function cmp($a, $b) { return $b["status"] - $a["status"]; } $sorted = usort($your_array, "cmp"); var_dump($sorted); ?> 

Попробуй это

 function cmp_by_status($a, $b) { if ($a['status'] == $b['status']) { return 0; } return ($a['status'] < $b['status') ? -1 : 1; } usort($data_array, "cmp_by_status"); 

Я добавил этот ответ в многомерный массив Sort по конкретному ключевому типу сортировки определенного массива для сортировки значения массива.

 function sortBy($field, &$array, $direction = 'asc') { usort($array, create_function('$a, $b', ' $a = $a["' . $field . '"]; $b = $b["' . $field . '"]; if ($a == $b) { return 0; } return ($a ' . ($direction == 'desc' ? '>' : '<') .' $b) ? -1 : 1; ')); return true; } 

Вызов этой функции с помощью определенного ключа массива

 sortBy('status', $array);