2012-06-27 14 views
39

Meine Array wie folgt aussehen:PHP Array-Schlüssel neu anordnen

array(
    0 => 'val', 
    2 => 'val', 
    3 => 'val', 
    5 => 'val', 
    7 => 'val' 
); 

Wie kann ich den Schlüssel neu anordnen, so dass es wie 0, 1, 2, 3, 4 gehen?

Antwort

88

Verwendung array_values:

$reindexed_array = array_values($old_array); 
+1

perfekt! scheint die Arbeit zu tun – fxuser

+0

Array-Werte, obwohl gültig, ist nicht das, was ich empfehlen würde. Intern ruft es den Array-Konstruktor auf und gibt ein neues Array zurück. sort ist daher (marginal) schneller und kürzer zum schreiben, auch –

+0

ich brauche kein anderes Array zu verwenden. ich einfach array_values ​​() das aktuelle – fxuser

8

Durch die Verwendung von sort($array);

Siehe PHP Dokumentation here.

Ich würde sort über array_values empfehlen, da es kein zweites Array erstellen wird. Mit dem folgenden Code haben Sie nun zwei Arrays, die Platz belegen: $ reindexed_array und $ old_array. Nicht notwendig.

$reindexed_array = array_values($old_array);

+0

Wie lautet meine Antwort falsch? sort wird das Array umschlüsseln und sortieren, wie er gefragt hat. – Rawkode

+0

scheint auch den Job zu erledigen – fxuser

+0

@Rawkode Warum erstellt Array_Values ​​ein anderes Array, wenn ich array_values ​​() das aktuelle Array? es scheint auch so zu funktionieren – fxuser

12
array_splice($old_array, 0, 0); 

Es wird nicht Array sortiert und wird ein zweites Array

+0

Einfach und perfekt, da es kein 2. Array erzeugt und die Reihenfolge der Werte nicht verändert ... thx! –

0
array_splice($jam_array, 0, count($jam_array)); 

Um ein Array zu sortieren mit fehlenden Zwischen Indizes nicht schaffen, mit zählen die Bestellung ich s sicherer. So 0 ist der erste Index und count($jam_array) oder sizeof($jam_array) geben Sie die Dezimalstelle des Arrays, nämlich letzten Index.