1. Hinweis
Dieser Artikel beschäftigt sich mit dem Löschen von Schlüssel-Wert-Paaren aus einem Array anhand ihrer Position (bzw. Stelle/Offset).
Wie Paare anhand ihres Wertes gelöscht werden (z.B. alle ungeraden Werte löschen) erklärt der Artikel „Bestimmte Werte aus einem Array entfernen”.
2. Einleitung
Zum Entfernen von Werten aus einem Array anhand ihres Offsets wird array_splice(&$array, $offset, $length, $replacement) verwendet, wobei $replacement leer gelassen wird (oder alternativ übergibt man array()).
$offset entspricht der Stelle ab der mit dem „Schneiden” begonnen werden soll.
$length gibt an, wie viele Elemente „ausgeschnitten” werden sollen.
Wird $length leer gelassen, dann wird alles ab $offset entfernt.
Ist $length ein negativer Wert, dann werden alle Elemente ab $offset bis $length Elemente vorm Ende des Arrays entfernt (-1 entspräche etwa „alles von $offset bis zum vorletzten Element”).
3. Alle Elemente vom a-ten bis zum b-ten Element aus einem Array entfernen
PHP-Code
<?php $arr = array(10, 20, 30, 40, 50, 60, 70); // Das zweite und das dritte Element entfernen // Der zweite Parameter der Funktion ist hier 1, da von 0 aus durchnummeriert wird. // Der erste Wert im Array hat demnach den Schlüssel 0, der zweite den Schlüssel 1 usw. array_splice($arr, 1, 2); var_dump($arr); ?>
Ausgabe
array(5) { [0]=> int(10) [1]=> int(40) [2]=> int(50) [3]=> int(60) [4]=> int(70) }
4. Alle Elemente ab dem a-ten Element aus dem Array entfernen
PHP-Code
<?php $arr = array(10, 20, 30, 40, 50, 60, 70); // Alles ab dem dritten Element entfernen array_splice($arr, 2); var_dump($arr); ?>
Ausgabe
array(2) { [0]=> int(10) [1]=> int(20) }
5. Das erste Element aus einem Array entfernen
PHP-Code
<?php $arr = array(10, 20, 30, 40, 50, 60, 70); // Nur das erste Element entfernen array_splice($arr, 0, 1); var_dump($arr); ?>
Ausgabe
array(6) { [0]=> int(20) [1]=> int(30) [2]=> int(40) [3]=> int(50) [4]=> int(60) [5]=> int(70) }
Das erste Element kann aus einem Array auch entfernt werden, indem ein Mal array_shift() auf das Array angewendet wird.
6. Alle Elemente vom a-ten bis zum vorletzten Element entfernen
PHP-Code
<?php $arr = array(10, 20, 30, 40, 50, 60, 70); // Vom dritten Element bis zum vorletzten Element entfernen, jeweils einschließlich array_splice($arr, 2, -1); var_dump($arr); ?>
Ausgabe
array(3) { [0]=> int(10) [1]=> int(20) [2]=> int(70) }
7. Elemente entfernen mit Zählung vom Ende des Arrays aus
PHP-Code
<?php $arr = array(10, 20, 30, 40, 50, 60, 70); // Alles vom vorvorvorletzten (drittes Element vor dem letzten Element, würde man das // Array umdrehen dann stünde es also an vierter Stelle) bis zum vorletzten Element entfernen array_splice($arr, count($arr)-1-3, -1); // Das erste -1 bedeutet, dass vom Count-Wert zum Offset-Wert // umgerechnet wird, da z.B. ein Array mit nur einem Element // einen Count-Wert von 1 ergibt, das Element aber den Offset 0 hat. var_dump($arr); ?>
Ausgabe
array(4) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> int(70) }