2012-04-05 40 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