2012-04-05 58 views
4
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 ROI)是第一位的阵列等在PHP反向阵列

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

+1

这些都不是正确的答案? – peteroak 2016-03-05 13:10:11

+0

刚要离开这个悬挂?如果没有人帮你,然后发布你的解决方案,并将其标记为接受。 – AbraCadaver 2016-07-06 14:12:26

回答

18

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

$newArray = array_reverse($theArray, true); 

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

不服气?你可以在this codepad exampole上看到它的行动。

+1

“'array_reverse()'在这种情况下不起作用”,说这个问题... – 2012-04-05 12:08:41

+2

@Kolink + OP为什么不呢? – PeeHaa 2012-04-05 12:09:04

+0

因为他们想保持关键关联? – 2012-04-05 12:12:59

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

这将确保最高的投资回报率的项目是第一个在数组中。

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); 
+0

你也可以试试这个 – railsbox 2013-11-19 09:44:16