2012-04-05 12 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) } 
} 

私はこれをどのように行うことができますリバース配列

など私はちょうどこれを逆にしたいと思いますので、(2600年のROIとの)ID 6は、配列内の最初に来ますか? array_reverse()rsort()

+1

どれも正解ではありませんか? – peteroak

+0

ちょうどこれをぶら下げておくつもりですか?誰も助けなかったらあなたの解決策を投稿し、それを受け入れたことをマークしてください。 – AbraCadaver

答えて

18

http://php.net/manual/en/function.array-reverse.phpこの場合には動作しません。

$newArray = array_reverse($theArray, true); 

重要な部分は、キーを保存しtrueパラメータです。

確信していませんか?あなたはthis codepad exampoleで実際にそれを見ることができます。

+1

"この場合array_reverse()'は動作しません "という質問... –

+2

@Kolink + OPどうしてですか? – PeeHaa

+0

彼らは鍵の結合性を維持したいからですか? –

1

あなたはこれが最高のROIを持つ項目が配列の最初であることを確認しますので

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

のように、usort()機能を使用することができますkrsort

0

を試してみてください。これらの

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