array_splice()
Erfahren Sie, wie PHP's array_splice Elemente in Arrays entfernt, ersetzt und einfügt – mit Syntax, Parametern und ausführbaren Beispielen.
Die Manipulation von Arrays ist ein wesentlicher Bestandteil der Programmierung, und PHP stellt mehrere eingebaute Funktionen bereit, um die Arbeit mit Arrays zu erleichtern. Eine der flexibelsten ist array_splice — eine einzige Funktion, die Elemente an beliebiger Position entfernen, ersetzen und einfügen kann. Im Gegensatz zu array_slice(), das einen Teil eines Arrays kopiert und das Original unverändert lässt, verändert array_splice das Array direkt und gibt die entfernten Elemente zurück.
Diese Seite erklärt die Funktionssignatur, das Verhalten jedes Parameters (einschließlich der oft verwirrenden negativen Offsets und der Art, wie Schlüssel neu nummeriert werden) und zeigt ausführbare Beispiele für die drei häufigsten Anwendungsfälle: Entfernen, Ersetzen und Einfügen.
Was ist die array_splice-Funktion?
Die array_splice-Funktion ist eine eingebaute PHP-Funktion, mit der Sie Elemente aus einem array entfernen oder ersetzen und neue Elemente an ihrer Stelle einfügen können. Die Funktion verändert das ursprüngliche array und gibt die entfernten Elemente zurück, sofern vorhanden. Die Funktion nimmt drei Pflichtparameter und zwei optionale Parameter entgegen:
PHP array_splice-Funktion – Syntax
array_splice(array &$input, int $offset, ?int $length = null, mixed $replacement = [])$input: Das Eingabe-array, das verändert wird$offset: Der Index, ab dem die Operation beginnt$length(optional): Die Anzahl der zu entfernenden Elemente. Wenn nicht angegeben, werden alle Elemente ab$offsetbis zum Ende des Arrays entfernt$replacement(optional): Die Elemente, die anstelle der entfernten Elemente eingefügt werden. Wenn nicht angegeben, werden keine Elemente eingefügt
Wie funktioniert die array_splice-Funktion?
Die array_splice-Funktion arbeitet auf dem Eingabe-array, beginnend ab dem angegebenen Offset, und entfernt die angegebene Anzahl von Elementen. Wenn keine Länge angegeben wird, werden alle Elemente vom Offset bis zum Ende des Arrays entfernt. Die entfernten Elemente werden als array zurückgegeben.
Wenn der $replacement-Parameter angegeben wird, fügt die Funktion die Ersatzelemente an der Stelle der entfernten Elemente ein. Die Ersatzelemente können von beliebigem Datentyp sein, auch Arrays. Wenn der $replacement-Parameter nicht angegeben wird, werden keine Elemente eingefügt und die Funktion entfernt lediglich die angegebenen Elemente.
Die Funktion verändert das Eingabe-array direkt, das heißt, das ursprüngliche array wird durch die Operation geändert. Da der erste Parameter als Referenz übergeben wird (&$input), muss eine tatsächliche Variable übergeben werden — ein Literal-array oder das Ergebnis eines anderen Funktionsaufrufs kann nicht direkt übergeben werden.
Negativer Offset und negative Länge
Sowohl $offset als auch $length akzeptieren negative Werte, die vom Ende des Arrays gezählt werden:
- Ein negativer
$offsetstartet die Operation entsprechend viele Elemente vom Ende.array_splice($arr, -2)entfernt die letzten zwei Elemente. - Eine negative
$lengthstoppt die Entfernung entsprechend viele Elemente vor dem Ende des Arrays, sodass diese letzten Elemente erhalten bleiben.array_splice($arr, 1, -1)entfernt alles außer dem ersten und letzten Element.
Wie Schlüssel beeinflusst werden
array_splice ist für sequenzielle (listenähnliche) Arrays konzipiert. Nach der Operation werden numerische Schlüssel immer ab 0 neu nummeriert, während string-Schlüssel erhalten bleiben. Wenn Sie numerische Schlüssel unverändert behalten müssen, ist array_splice das falsche Werkzeug — verwenden Sie stattdessen array_slice() mit dem Flag preserve_keys.
Beispiele
Elemente aus einem array entfernen
Angenommen, wir haben ein array mit Zahlen und möchten die ersten drei Elemente entfernen. Wir können die array_splice-Funktion wie folgt verwenden:
PHP – Elemente aus einem array mit array_splice entfernen
In diesem Beispiel wird das $numbers-array verändert und die ersten drei Elemente werden entfernt. Die entfernten Elemente werden in der Variable $removed zurückgegeben. Der Wert von $numbers nach dem Funktionsaufruf ist [4, 5, 6], und der Wert von $removed ist [1, 2, 3].
Elemente in einem array ersetzen
Angenommen, wir haben ein array mit Namen und möchten den dritten und vierten Namen durch neue Namen ersetzen. Wir können die array_splice-Funktion wie folgt verwenden:
PHP – Elemente in einem array mit array_splice ersetzen
In diesem Beispiel wird das $names-array verändert, und der dritte und vierte Name werden durch die Namen 'Alex' und 'Olivia' ersetzt. Der Wert von $names nach dem Funktionsaufruf ist ['John', 'Mary', 'Alex', 'Olivia', 'Sarah']. Beachten Sie, dass die Anzahl der Ersatzelemente nicht mit der Anzahl der entfernten Elemente übereinstimmen muss — Sie können zwei Elemente durch fünf oder durch gar keine ersetzen.
Elemente in ein array einfügen
Angenommen, wir haben ein array mit Buchstaben und möchten die Buchstaben 'B' und 'C' am Anfang des Arrays einfügen. Wir können die array_splice-Funktion wie folgt verwenden:
PHP – Elemente in ein array mit array_splice einfügen
In diesem Beispiel wird das $letters-array verändert, und die Buchstaben 'B' und 'C' werden am Anfang des Arrays eingefügt. Der Wert von $letters nach dem Funktionsaufruf ist ['B', 'C', 'D', 'E', 'F'].
Negativen Offset und negative Länge verwenden
Dieses Beispiel entfernt alles zwischen dem ersten und letzten Element, indem ein positiver Offset mit einer negativen Länge kombiniert wird:
PHP – array_splice mit negativer Länge
<?php
$items = ['first', 'a', 'b', 'c', 'last'];
$removed = array_splice($items, 1, -1);
print_r($items); // ['first', 'last']
print_r($removed); // ['a', 'b', 'c']
?>Hier ist $offset 1 (Start nach 'first') und $length -1 (Stopp ein Element vor dem Ende, sodass 'last' erhalten bleibt), sodass die drei mittleren Elemente entfernt und zurückgegeben werden.
Verwandte Funktionen
array_splice überschneidet sich mit mehreren spezialisierteren array-Funktionen. Wählen Sie die spezifischste für den jeweiligen Zweck — das macht Ihre Absicht klarer:
array_slice()— einen Abschnitt extrahieren, ohne das ursprüngliche array zu verändern.array_merge()— Arrays aneinanderhängen, anstatt sie an einer bestimmten Position einzufügen.array_push()/array_unshift()— Elemente am Ende oder am Anfang hinzufügen.array_pop()/array_shift()— ein einzelnes Element vom Ende oder vom Anfang entfernen.
Fazit
array_splice ist das Schweizer Taschenmesser der array-Bearbeitung in PHP: Ein einziger Aufruf kann Elemente an beliebigem Offset entfernen, ersetzen oder einfügen. Behalten Sie folgende Punkte im Hinterkopf:
- Es verändert das Eingabe-array und gibt die entfernten Elemente zurück.
- Die Anzahl der Ersatzelemente ist unabhängig von der Anzahl der entfernten Elemente.
- Numerische Schlüssel werden neu nummeriert; string-Schlüssel bleiben erhalten.
- Negativer
$offsetund negative$lengthwerden vom Ende des Arrays gezählt.
Wenn Sie nur einen Abschnitt lesen möchten, ohne die Quelle zu verändern, bevorzugen Sie array_slice().