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 (roi が 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

それは簡単です。次のような php の usort 関数を使用できます。

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

$a位置を入れ替えるだけでOK$bです。

于 2019-09-20T03:25:03.957 に答える