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); }