2016-04-14 5 views
0

Wie würde ich ein Array sortieren, in dem sich die Werte bewegen und der Index still bleibt. Ich habe diesen Code unten geschrieben, obwohl die Antwort, die er gab, nicht ideal ist.Ein Array so sortieren, dass sich der Index nicht bewegt?

$array = array(6,2,22,15,33,40,30,70,65); 
asort($array,); 
print_r($array); 

Nun sortiert diese die Werte, aber der Index bewegt sich mit dem Wert. Ich bekomme die Antwort;

Array ([1] => 2 [0] => 6 [3] => 15 [2] => 22 [6] => 30 [4] => 33 [5] => 40 [8] => 65 [7] => 70) 

Obwohl ich möchte es wie folgt zu zeigen;

Array ([0] => 2 [1] => 6 [2] => 15, etc. 

Vielen Dank!

+1

*** a ** ssoziative sort() * – Rizier123

+5

Verwenden Sie sort() statt asort() –

+0

Dies ist ein Paradoxon ... Sie wollen die Indizes zu halten, aber nicht zu bleiben ... wie @MarkBaker sagt : benutze sort() –

Antwort

0

Verwendung array_combine() *

Es verschmilzt zwei Arrays in eine die erste als eine Reihe von Tasten, und der zweite als Wertesatz für das neue Array.

Also im Grunde müssen Sie nur die ursprünglichen Schlüssel und die sortierten Werte erhalten, und füttern Sie sie dann array_combine().

$a = [ 
    'a' => 'orange', 
    'b' => 'apple', 
    'o' => 'banana', 
]; 

$tmp = $a; 
sort($tmp); 
$result = array_combine(array_keys($a), $tmp); 

var_dump($a, $result); 

Sie können es ausprobieren here.

Prost.


*: erhältlich von PHP 5.

Verwandte Themen