Обратный массив в php

array(7) { [0]=> array(2) { ["id"]=> string(1) "9" ["roi"]=> float(0) } [1]=> array(2) { ["id"]=> string(1) "1" ["roi"]=> float(0) } [2]=> array(2) { ["id"]=> string(2) "10" ["roi"]=> float(0) } [3]=> array(2) { ["id"]=> string(2) "14" ["roi"]=> float(0) } [4]=> array(2) { ["id"]=> string(1) "4" ["roi"]=> float(0) } [5]=> array(2) { ["id"]=> string(1) "5" ["roi"]=> float(141) } [6]=> array(2) { ["id"]=> string(1) "6" ["roi"]=> float(2600) } } 

Я просто хотел бы обратить вспять это, поэтому id 6 (с roi из 2600) на первом месте в массиве и т. Д.

Как я могу это сделать? array_reverse() и rsort() в этом случае не работают

http://php.net/manual/en/function.array-reverse.php :

 $newArray = array_reverse($theArray, true); 

Важной частью является true параметр, который сохраняет ключи.

Не убежден? Вы можете увидеть это в действии на этом примере кода .

Попробовать krsort

 $res = array( 0=>array("id"=>9, "roi"=>0), 1=>array("id"=>1,"roi"=>0), 2=>array("id"=>10,"roi"=>0), 3=>array("id"=>14,"roi"=>0), 4=>array("id"=>4,"roi"=>0), 5=>array("id"=>5,"roi"=>141), 6=>array("id"=>6,"roi"=>2600)); $res4 = array(); $count = count($res); for($i=$count-1;$i>=0;$i--){ $res4[$i] =$res[$i]; } print_r($res4); 

Вы можете использовать функцию usort() , например

 $arr = array('......'); // your array usort($arr, "my_reverse_array"); function my_reverse_array($a, $b) { if($a['roi'] == $b['roi']) { return 0; } return ($a['roi'] < $b['roi']) ? -1 : 1; } 

Это позволит убедиться, что элемент с самым высоким roi является первым в массиве.

 foreach($array as $arr){ array_unshift($array, $arr); array_pop($array); }