2012-06-08 4 views
6

Aus irgendeinem Grund, wenn ich Elemente aus einem Array zu entfernen, bin ich mit Tasten wie 0, 2, 3, 4, 6, 9 statt 0, 1, 2, 3, 4, 5. So Ich versuche herauszufinden, warum und was ich tun kann, um es zu reparieren, ohne alles über sort() zu sortieren, da das Dinge in Ordnung bringt. Ich möchte nur eine Frage des Sprechens wiederholen.PHP fix numerische Tasten im Array

Antwort

26

Verwenden Sie, um die Werte des ursprünglichen Arrays abzurufen und sie an ein neues Array zurückzugeben. Dieses neue Array enthält neue numerische Schlüssel.

$new_array = array_values($old_array); 
+0

Ich muss davon ausgehen, dass dies nicht funktioniert, wenn ein Array-Schlüssel möglicherweise assoziativ sein kann, und Sie über thouse wissen möchten. – ThorSummoner

3

Da die Schlüssel unbedingt spielen keine Rolle, können Sie einfach Ihre Endergebnis Array durch array_values() laufen. Es belässt alle Werte in der Reihenfolge, in der sie bereits waren, und setzt alle Schlüssel auf sequentielle numerische Werte zurück.

+0

Es ist tatsächlich falsch, jemand fand heraus, dass die Reihenfolge nicht die Reihenfolge der Erscheinung ist, sondern die Foreach-Reihenfolge, die konserviert wird: http://php.net/manual/fr/function.array-values.php#114941 – Sebas

5

Sie sollten array_splice() verwenden, um Elemente aus Ihrem Array zu entfernen, damit es den Schlüssel so ändert, wie Sie es wünschen.

Sie müssen vorsichtig sein mit array_values() da es nicht funktioniert (oder zumindest nicht funktioniert), weil es möglicherweise re-order your numeric indexes. Wenn Sie den Wert bei Index 0 nach dem Wert bei Index 3 hinzugefügt haben, wird der Wert bei Index 0 am Ende des von array_values() zurückgegebenen Arrays platziert, während es in Ihrem zuerst angezeigt wird.

Verwandte Themen