У меня есть этот массив:
Array ( [0] => Array ( [id] => 6347 [lat] => 18.520430 [lng] => 73.856743 [country_id] => 18 [description] => pune is vary nice plac!!!!!!!!!!!!<br> [loc_badge] => img/icon-monument.png [distance] => 0 [country] => india [city] => pune [refId] => 6340 [avgRate] => 4.7 ) [1] => Array ( [id] => 6587 [lat] => 18.649632 [lng] => 73.744843 [country_id] => 18 [description] => Ravet is vary nice city near by pune<br> [loc_badge] => img/icon-attraction.png [distance] => 18.5865663140631 [country] => india [city] => ravet [refId] => 6749 [avgRate] => 0 ) [2] => Array ( [id] => 6633 [lat] => 17.691401 [lng] => 74.000938 [country_id] => 18 [description] => satara is vary nice city<br> [loc_badge] => img/icon-monument.png [distance] => 93.4305849434119 [country] => india [city] => satara [refId] => 6834 [avgRate] => 6 ) [3] => Array ( [id] => 6213 [lat] => 18.655491 [lng] => 72.867920 [country_id] => 150 [description] => Alibag is a coastal town and a municipal council in Raigad District in the Konkan region of Maharashtra, India. [loc_badge] => img/icon-beach.png [distance] => 105.287803206408 [country] => maharashtra [city] => alibag [refId] => 6212 [avgRate] => 2 ) )
Я хочу отсортировать этот массив в порядке убывания avgRate, чтобы индекс массива был таким:
2 0 3 1
любая идея, как это можно сделать?
Попробуйте следующее: Использование array_multisort
$sort = array(); foreach($your_array as $k=>$v) { $sort['avgRate'][$k] = $v['avgRate']; } array_multisort($sort['avgRate'], SORT_DESC, $your_array); echo "<pre>"; print_r($your_array);
Ссылка: http://php.net/manual/en/function.array-multisort.php
Используйте класс SET в торте
$result = Set::sort($yourArray, '{n}.avgRate', 'desc');
Посмотрите на функцию usort .
Просто определите функцию (в руководстве как «cmp») для сортировки и используйте ее как обратный вызов:
function my_sorting_function($a, $b) { return $a["avgRate"]>$b["avgrate"]?1:-1; }
и затем назовите его
usort($my_array_variable,"my_sorting_function");