Организация многомерного массива

У меня есть PHP-массив, который выглядит так: http://pastie.org/1346063 (см. Пример pastie для массива)

То, что я хочу сделать, – это перебрать этот массив в другой массив, который сортируется по каждому массиву [голосов] [POINTS], численному нисходящему. Массив с наивысшим значением [голосов] [ПУНКТ] будет первым, указанным в основном массиве.

Используя usort() мы можем создать собственную функцию сравнения:

 function cmp($a, $b) { if($a['votes']['POINTS'] == $b['votes']['POINTS']) { return 0; } return ($a['votes']['POINTS'] < $b['votes']['POINTS']) ? 1 : -1; } usort($array, 'cmp'); 

Результаты:

Используя тестовые данные с аналогичной структурой, такой как ваша:

 Array ( [0] => Array ( [votes] => Array ( [UP] => 1 [DOWN] => 0 [POINTS] => 5 ) ) [1] => Array ( [votes] => Array ( [UP] => 1 [DOWN] => 0 [POINTS] => 4 ) ) [2] => Array ( [votes] => Array ( [UP] => 1 [DOWN] => 0 [POINTS] => 2 ) ) [3] => Array ( [votes] => Array ( [UP] => 1 [DOWN] => 0 [POINTS] => 1 ) ) ) 

Решение : –

Предположим, ваш массив хранится в переменной с именем $ data

Вы можете просто отсортировать свой многомерный массив с помощью array_multisort

 foreach ($data as $key => $row) { $points[$key] = $row['votes']['points']; } // Sort the data with points descending array_multisort($points, SORT_DESC, $data); 

Надеюсь это поможет.