在PHP中反转数组

时间:2012-04-05 12:07:00

标签: php arrays

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()在这种情况下不起作用

6 个答案:

答案 0 :(得分:23)

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

$newArray = array_reverse($theArray, true);

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

不相信?您可以在this codepad exampole上看到它。

答案 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);

答案 2 :(得分:1)

foreach($array as $arr){

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

}

答案 3 :(得分: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的项目位于数组中。

答案 4 :(得分: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>';

答案 5 :(得分:0)

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

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

仅交换位置$a$b是正确的。