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

Ich möchte nur dieses gerne umkehren, so id 6 (mit roi von 2600) steht an erster Stelle in der Anordnung usw.Reverse-Array in PHP

Wie kann ich das tun? array_reverse() und rsort() nicht in diesem Fall arbeiten

+1

keiner von ihnen ist die richtige Antwort? – peteroak

+0

Nur um dieses hängen zu lassen? Wenn Ihnen nichts geholfen hat, posten Sie Ihre Lösung und markieren Sie sie als akzeptiert. – AbraCadaver

Antwort

18

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

$newArray = array_reverse($theArray, true); 

Der wichtige Teil der true Parameter ist, der die Schlüssel bewahrt.

Nicht überzeugt? Sie können es in Aktion auf this codepad exampole sehen.

+1

"' array_reverse() 'funktioniert in diesem Fall nicht", sagt die Frage ... –

+2

@Kolink + OP warum nicht? – PeeHaa

+0

Weil sie die Assoziativität des Schlüssels behalten wollen? –

0

Sie können eine usort() Funktion verwenden, wie so

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

das Element mit der höchsten roi im Array Dies wird sicherstellen, dass zuerst.

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

Sie können dieses auch versuchen – railsbox

0
foreach($array as $arr){ 

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

}