6
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(投资回报率为 2600)在数组中排在第一位,等等。

我怎样才能做到这一点?array_reverse()在这种情况下rsort()不起作用

4

6 回答 6

23

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

$newArray = array_reverse($theArray, true);

重要的部分是true参数,它保留了密钥。

不服气?您可以在此键盘示例上看到它的实际效果。

于 2012-04-05T12:08:23.120 回答
1
foreach($array as $arr){

  array_unshift($array, $arr); 
  array_pop($array);

}
于 2014-02-21T16:58:41.510 回答
1
$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);
于 2013-11-19T09:42:51.527 回答
0

你可以使用一个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 的项目在数组中排在第一位。

于 2012-04-05T12:12:31.847 回答
0
$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));
    $count = count($res);

    for ($i=0, $j=$count-1; $i<=floor($count/2); $i++, $j--) {
        $temp = $res[$j];
        $res[$j] = $res[$i];
        $res[$i] = $temp;
    }
    echo '<pre>';
    print_r($res);
    echo '</pre>';
于 2018-05-05T08:48:31.647 回答
0

这很简单。可以使用 php 的 usort 函数,例如:

usort($arr, function($a, $b) {    
  return $b['roi'] - $a['roi'];    
});

只需交换位置$a$b这是正确的。

于 2019-09-20T03:25:03.957 回答