Die erste natürliche Überlegung eines Entwicklers, wenn er ein Element aus einem Array löschen möchte, wird folgenden Ansatz hervorbringen:
unset($array[$key]);
Das funktioniert soweit auch wunderbar – es sei denn, man verwendet einen numerischen Index. Ein Beispiel:
$array = array( 0=>'Apfel', 1=>'Banane', 2=>'Birne' ); unset($array[1]); /* ergibt: $array = array( 0=>'Apfel', 2=>'Birne' ); */
Soweit verhält sich php hier natürlich völlig korrekt, allerdings möchte man in der einen oder anderen Situation einen durchgängigen Array Index haben – auch, wenn sich der Inhalt des Arrays ändert. Um dies zu erreichen, verwendet man nicht unset, sondern array_splice. Und das geht so:
array_splice($array, $key, $length);
Im Beispiel sieht es dann so aus:
$array = array( 0=>'Apfel', 1=>'Banane', 2=>'Birne' ); array_splice($array, 1, 1); /* ergibt: $array = array( 0=>'Apfel', 1=>'Birne' ); */
[Update]
Fälschlicherweise hatte ich array_values() übersehen. Ihr habt also auch diese Möglichkeit:
$array = array( 0=>'Apfel', 1=>'Banane', 2=>'Birne' ); unset($array[1]); $array = array_values($array); /* ergibt: $array = array( 0=>'Apfel', 1=>'Birne' ); */
Vielen Dank an Patrick für den Hinweis 😉