Wie löscht man ein Element aus einem Array in PHP?

Veröffentlicht 27. August 2024

Verwendung der Funktion unset() zum Entfernen von Array-Elementen

Entfernen eines einzelnen Elements mit unset()

Die Funktion unset() in PHP löscht ein Element aus einem Array anhand seines Schlüssels. Um ein einzelnes Element zu entfernen, übergeben Sie das Array und den Schlüssel des zu entfernenden Elements als Argumente an die Funktion unset().

Hier ist ein Beispiel, das zeigt, wie man ein einzelnes Element aus einem Array mit unset() entfernt:

$fruits = array("Apfel", "Banane", "Orange", "Traube");
unset($fruits[2]);
print_r($fruits);

In diesem Beispiel haben wir ein Array namens $fruits mit vier Elementen. Wir verwenden die Funktion unset(), um das dritte Element (Index 2) aus dem Array zu entfernen, welches "Orange" ist. Nach dem Entfernen des Elements verwenden wir print_r(), um das aktualisierte Array anzuzeigen, was Folgendes ausgibt:

Array
(
    [0] => Apfel
    [1] => Banane
    [3] => Traube
)

Bei der Verwendung von unset() zum Entfernen eines Elements werden die Indizes des Arrays nicht neu indiziert. Nach dem Entfernen eines Elements kann das Array Lücken in seinen Indizes aufweisen.

Entfernen mehrerer Elemente mit unset()

Die Funktion unset() ermöglicht auch das Entfernen mehrerer Elemente aus einem Array durch Angabe mehrerer Schlüssel. Übergeben Sie mehrere Schlüssel als separate Argumente an die Funktion unset(), um mehrere Elemente in einer einzigen Anweisung zu löschen.

Hier ist ein Beispiel, das das Entfernen mehrerer Elemente aus einem Array mit unset() demonstriert:

$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
unset($numbers[3], $numbers[6], $numbers[8]);
print_r($numbers);

In diesem Beispiel haben wir ein Array $numbers mit zehn Elementen. Wir verwenden die Funktion unset(), um das vierte Element (Index 3), das siebte Element (Index 6) und das neunte Element (Index 8) aus dem Array zu entfernen. Nach dem Entfernen der Elemente sieht das aktualisierte Array wie folgt aus:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [4] => 5
    [5] => 6
    [7] => 8
    [9] => 10
)

Die Funktion unset() entfernt die angegebenen Elemente aus dem Array und lässt die verbleibenden Elemente intakt. Die Indizes des Arrays werden nicht automatisch neu indiziert.

Funktion Beschreibung
unset() Entfernt ein Element aus einem Array anhand seines Schlüssels
unset($array[key]) Entfernt ein einzelnes Element aus einem Array
unset($array[key1], $array[key2], ...) Entfernt mehrere Elemente aus einem Array

Entfernen von Elementen aus einem Array mit array_splice()

Löschen von Elementen mit array_splice()

Die Funktion array_splice() in PHP ermöglicht es Ihnen, Elemente aus einem Array zu entfernen, indem Sie den Startindex und die Anzahl der zu entfernenden Elemente angeben. Diese Funktion ändert das Original-Array und gibt die entfernten Elemente als neues Array zurück.

Hier ist ein Beispiel, das zeigt, wie man array_splice() verwendet, um Elemente aus einem Array zu entfernen:

$fruits = array("Apfel", "Banane", "Orange", "Traube", "Kiwi");
$removed_fruits = array_splice($fruits, 2, 2);
print_r($fruits);
print_r($removed_fruits);

In diesem Beispiel haben wir ein Array $fruits mit fünf Elementen. Wir verwenden array_splice(), um zwei Elemente ab Index 2 (dem dritten Element) zu entfernen. Der erste Parameter gibt das Array an, der zweite Parameter ist der Startindex, und der dritte Parameter ist die Anzahl der zu entfernenden Elemente.

Nach der Verwendung von array_splice() enthält das Array $fruits die verbleibenden Elemente:

Array
(
    [0] => Apfel
    [1] => Banane
    [2] => Kiwi
)

Die entfernten Elemente werden als neues Array zurückgegeben und in der Variable $removed_fruits gespeichert:

Array
(
    [0] => Orange
    [1] => Traube
)

Neuindizierung des Arrays nach Verwendung von array_splice()

Es ist wichtig zu beachten, dass array_splice() das Array nach dem Entfernen von Elementen automatisch neu indiziert. Die verbleibenden Elemente werden verschoben, um die durch die entfernten Elemente entstandenen Lücken zu füllen, und die Indizes des Arrays werden aktualisiert.

Hier ist ein Beispiel, das das Neuindizierungsverhalten von array_splice() zeigt:

$numbers = array(5, 10, 15, 20, 25);
array_splice($numbers, 1, 3);
print_r($numbers);

In diesem Beispiel entfernen wir drei Elemente ab Index 1 (dem zweiten Element) aus dem Array $numbers mit array_splice(). Nach dem Entfernen der Elemente wird das Array neu indiziert:

Array
(
    [0] => 5
    [1] => 25
)

Die verbleibenden Elemente werden verschoben, um die Lücken zu füllen, und die Indizes des Arrays werden aktualisiert.

Beispiel

  1. Verwalten einer To-Do-Liste: Angenommen, Sie haben ein Array, das eine To-Do-Liste repräsentiert, und Sie möchten erledigte Aufgaben aus der Liste entfernen. Sie können array_splice() verwenden, um die erledigten Aufgaben durch Angabe ihrer Indizes zu entfernen.

    $todo_list = array("Einkaufen gehen", "Projekt abschließen", "Kunden anrufen", "Meeting besuchen");
    $completed_tasks = array(1, 3);
    foreach ($completed_tasks as $index) {
       array_splice($todo_list, $index, 1);
    }
    print_r($todo_list);

    Ausgabe:

    Array
    (
       [0] => Einkaufen gehen
       [1] => Kunden anrufen
    )
  2. Entfernen von Duplikaten: Wenn Sie ein Array mit Duplikaten haben und die Duplikate entfernen möchten, können Sie array_splice() zusammen mit array_unique() verwenden, um dies zu erreichen.

    $numbers = array(1, 2, 3, 2, 4, 3, 5);
    $unique_numbers = array_unique($numbers);
    $duplicate_indexes = array_diff_key($numbers, $unique_numbers);
    foreach ($duplicate_indexes as $index => $value) {
       array_splice($numbers, $index, 1);
    }
    print_r($numbers);

    Ausgabe:

    Array
    (
       [0] => 1
       [1] => 2
       [2] => 3
       [4] => 4
       [6] => 5
    )
Funktion Beschreibung
array_splice() Entfernt Elemente aus einem Array und gibt sie als neues Array zurück
array_splice($array, $start, $length) Entfernt $length Elemente aus $array beginnend bei Index $start
$removed_elements = array_splice($array, $start, $length) Weist die entfernten Elemente $removed_elements zu

Entfernen von Elementen aus einem assoziativen Array

Löschen von Elementen aus einem assoziativen Array mit unset()

In PHP können Sie Elemente aus einem assoziativen Array mit der Funktion unset() entfernen, indem Sie den Schlüssel des zu löschenden Elements angeben. Die Funktion unset() entfernt das Schlüssel-Wert-Paar aus dem Array.

Hier ist ein Beispiel, das zeigt, wie man ein Element aus einem assoziativen Array mit unset() entfernt:

$person = array(
    "name" => "John",
    "alter" => 30,
    "stadt" => "New York",
    "land" => "USA"
);

unset($person["stadt"]);

print_r($person);

In diesem Beispiel haben wir ein assoziatives Array namens $person, das Informationen über eine Person darstellt. Jedes Schlüssel-Wert-Paar im Array entspricht einem bestimmten Attribut der Person.

Um das Element "stadt" aus dem Array $person zu entfernen, verwenden wir die Funktion unset() und übergeben die Array-Variable gefolgt vom Schlüssel in eckigen Klammern: unset($person["stadt"]). Dies entfernt das Schlüssel-Wert-Paar, bei dem der Schlüssel "stadt" ist.

Nach dem Entfernen des Elements wird die Funktion print_r() verwendet, um das aktualisierte Array $person anzuzeigen:

Array
(
    [name] => John
    [alter] => 30
    [land] => USA
)

Wie Sie sehen können, wurde das Element "stadt" aus dem Array entfernt, und die verbleibenden Schlüssel-Wert-Paare bleiben erhalten.

Es ist wichtig zu beachten, dass beim Entfernen eines Elements aus einem assoziativen Array mit unset() die Struktur des Arrays unverändert bleibt. Die Schlüssel der verbleibenden Elemente werden nicht geändert, und es findet keine Neuindizierung statt.

Sie können mehrere Elemente aus einem assoziativen Array entfernen, indem Sie mehrere Schlüssel in separaten unset()-Anweisungen angeben:

unset($person["alter"], $person["land"]);

Diese Anweisung entfernt sowohl das Element "alter" als auch das Element "land" aus dem Array $person.

Die Verwendung von unset() ist eine einfache Möglichkeit, Elemente aus einem assoziativen Array zu entfernen, wenn Sie diespezifischen Schlüssel kennen, die Sie löschen möchten.

Funktion Beschreibung
unset() Entfernt ein Element aus einem assoziativen Array anhand seines Schlüssels
unset($array[key]) Entfernt das Schlüssel-Wert-Paar aus $array, bei dem der Schlüssel angegeben ist

Beispiel: Entfernen eines Produkts aus einem Warenkorb

Angenommen, Sie haben einen Online-Warenkorb, der als assoziatives Array implementiert ist, wobei jeder Schlüssel eine Produkt-ID darstellt und der zugehörige Wert die Menge dieses Produkts im Warenkorb repräsentiert. Wenn ein Benutzer beschließt, ein Produkt aus seinem Warenkorb zu entfernen, können Sie unset() verwenden, um das entsprechende Schlüssel-Wert-Paar zu entfernen.

$warenkorb = array(
    "artikel1" => 2,
    "artikel2" => 1,
    "artikel3" => 3
);

unset($warenkorb["artikel2"]);

print_r($warenkorb);

Ausgabe:

Array
(
    [artikel1] => 2
    [artikel3] => 3
)

In diesem Beispiel wird das Produkt "artikel2" mit unset() aus dem Array $warenkorb entfernt.

Beispiel: Entfernen eines Benutzers aus einer Benutzerdatenbank

Stellen Sie sich vor, Sie haben eine Benutzerdatenbank, die als assoziatives Array gespeichert ist, wobei Benutzer-IDs als Schlüssel und Benutzerinformationen als Werte dienen. Wenn Sie einen Benutzer aus der Datenbank entfernen müssen, können Sie unset() verwenden, um das entsprechende Schlüssel-Wert-Paar zu löschen.

$benutzerDatenbank = array(
    "benutzer1" => array("name" => "John", "email" => "john@example.com"),
    "benutzer2" => array("name" => "Jane", "email" => "jane@example.com"),
    "benutzer3" => array("name" => "Bob", "email" => "bob@example.com")
);

unset($benutzerDatenbank["benutzer2"]);

print_r($benutzerDatenbank);

Ausgabe:

Array
(
    [benutzer1] => Array
        (
            [name] => John
            [email] => john@example.com
        )

    [benutzer3] => Array
        (
            [name] => Bob
            [email] => bob@example.com
        )
)

In diesem Beispiel wird der Benutzer mit der ID "benutzer2" mit unset() aus dem Array $benutzerDatenbank entfernt.

Verwendung von array_diff() zum Entfernen von Elementen aus einem Array

Erstellen eines neuen Arrays ohne bestimmte Elemente

Die Funktion array_diff() in PHP erstellt ein neues Array, das alle Elemente aus dem ersten Array enthält, die in keinem der anderen als Parameter übergebenen Arrays vorhanden sind. Diese Funktion kann Elemente aus einem Array entfernen, indem sie ein neues Array ohne die angegebenen Elemente erstellt.

Hier ist ein Beispiel, das zeigt, wie man array_diff() verwendet, um Elemente aus einem Array zu entfernen:

$original_array = array("Apfel", "Banane", "Orange", "Traube", "Kiwi");
$elements_to_remove = array("Banane", "Traube");
$new_array = array_diff($original_array, $elements_to_remove);
print_r($new_array);

In diesem Beispiel haben wir ein Array namens $original_array, das fünf Elemente enthält. Wir haben auch ein weiteres Array $elements_to_remove, das die Elemente angibt, die wir aus $original_array entfernen möchten.

Wir verwenden die Funktion array_diff(), um ein neues Array $new_array zu erstellen, das alle Elemente aus $original_array enthält, die nicht in $elements_to_remove vorhanden sind. Der erste Parameter von array_diff() ist das ursprüngliche Array, und der zweite Parameter ist das Array der zu entfernenden Elemente.

Nach der Ausführung dieses Codes wird $new_array die folgenden Elemente enthalten:

Array
(
    [0] => Apfel
    [2] => Orange
    [4] => Kiwi
)

Die Funktion array_diff() hat die Elemente "Banane" und "Traube" aus $original_array entfernt und ein neues Array mit den verbleibenden Elementen zurückgegeben.

Es ist wichtig zu beachten, dass array_diff() die Werte der Arrays vergleicht, nicht die Schlüssel. Das resultierende Array wird neue numerische Schlüssel beginnend bei Null haben, auch wenn das ursprüngliche Array String- oder nicht-sequenzielle Schlüssel hatte.

Sie können array_diff() auch mit mehreren Arrays verwenden, um Elemente zu entfernen, die in einem der anderen Arrays vorhanden sind:

$array1 = array("a" => "Apfel", "b" => "Banane", "c" => "Kirsche");
$array2 = array("a" => "Apfel", "b" => "Blaubeere", "d" => "Dattel");
$array3 = array("a" => "Aprikose", "b" => "Banane", "e" => "Holunderbeere");
$result = array_diff($array1, $array2, $array3);
print_r($result);

In diesem Beispiel vergleicht array_diff() $array1 mit $array2 und $array3 und gibt ein neues Array zurück, das die Elemente aus $array1 enthält, die weder in $array2 noch in $array3 vorhanden sind:

Array
(
    [c] => Kirsche
)

Die Funktion array_diff() kann sehr nützlich sein, wenn Sie ein Array basierend auf bestimmten Werten filtern müssen, ohne das ursprüngliche Array zu ändern. Sie gibt Ihnen die Flexibilität, ein neues Array nur mit den gewünschten Elementen zu erstellen.

Funktion Beschreibung
array_diff() Erstellt ein neues Array, das Elemente aus dem ersten Array enthält, die in keinem der anderen Arrays vorhanden sind
$result = array_diff($array1, $array2, ...) Weist das resultierende Array $result zu

Beispiel: Filtern einer Liste von E-Mail-Adressen

Angenommen, Sie haben eine Liste von E-Mail-Adressen und möchten bestimmte E-Mail-Adressen aus der Liste entfernen. Sie können array_diff() verwenden, um ein neues Array ohne die angegebenen E-Mail-Adressen zu erstellen.

$email_liste = array("john@example.com", "jane@example.com", "bob@example.com", "alice@example.com");
$gesperrte_emails = array("jane@example.com", "bob@example.com");
$gefilterte_emails = array_diff($email_liste, $gesperrte_emails);
print_r($gefilterte_emails);

Ausgabe:

Array
(
    [0] => john@example.com
    [3] => alice@example.com
)

In diesem Beispiel wird array_diff() verwendet, um das Array $email_liste zu filtern, indem die E-Mail-Adressen entfernt werden, die im Array $gesperrte_emails angegeben sind. Das resultierende Array $gefilterte_emails enthält nur die E-Mail-Adressen, die nicht gesperrt sind.

Beispiel: Vergleich zweier Arrays und Finden der Unterschiede

Wenn Sie zwei Arrays haben und die Elemente finden möchten, die im ersten Array vorhanden sind, aber nicht im zweiten, können Sie array_diff() verwenden.

$array1 = array("Apfel", "Banane", "Orange", "Traube");
$array2 = array("Banane", "Kiwi", "Birne");
$diff = array_diff($array1, $array2);
print_r($diff);

Ausgabe:

Array
(
    [0] => Apfel
    [2] => Orange
    [3] => Traube
)

Hier vergleicht array_diff() $array1 mit $array2 und gibt ein neues Array $diff zurück, das die Elemente aus $array1 enthält, die nicht in $array2 vorhanden sind. Dies ist nützlich, wenn Sie die einzigartigen Elemente in einem Array im Vergleich zu einem anderen finden möchten.

Entfernen des ersten oder letzten Elements aus einem Array in PHP

Entfernen des letzten Elements mit array_pop()

Die Funktion array_pop() in PHP entfernt das letzte Element aus einem Array und gibt den Wert des entfernten Elements zurück. Diese Funktion ändert das ursprüngliche Array, indem sie das letzte Element entfernt und das Array um ein Element verkürzt.

Hier ist ein Beispiel, das zeigt, wie man das letzte Element aus einem Array mit array_pop() entfernt:

$fruits = array("Apfel", "Banane", "Orange", "Traube");
$removed_fruit = array_pop($fruits);
echo "Entferntes Obst: " . $removed_fruit . "\n";
print_r($fruits);

In diesem Beispiel haben wir ein Array $fruits mit vier Elementen. Wir verwenden die Funktion array_pop(), um das letzte Element aus dem Array zu entfernen. Das entfernte Element wird in der Variable $removed_fruit gespeichert.

Nach der Ausführung dieses Codes wird die Ausgabe wie folgt aussehen:

Entferntes Obst: Traube
Array
(
    [0] => Apfel
    [1] => Banane
    [2] => Orange
)

Die Funktion array_pop() hat das letzte Element "Traube" aus dem Array $fruits entfernt und seinen Wert zurückgegeben. Das Array $fruits wird dann mit print_r() ausgegeben und zeigt, dass es jetzt nur noch drei Elemente enthält.

Es ist wichtig zu beachten, dass array_pop() den Wert des entfernten Elements zurückgibt, den Sie in einer Variable speichern oder direkt verwenden können. Wenn das Array leer ist, gibt array_pop() null zurück.

Beispiel: Verfolgen der letzten Benutzeraktionen

Angenommen, Sie möchten die neuesten Aktionen eines Benutzers verfolgen, wobei die Anzahl der zu speichernden Aktionen begrenzt ist. Sie können array_pop() verwenden, um die älteste Aktion zu entfernen, wenn die Grenze überschritten wird.

$letzteAktionen = array();
$maxAktionen = 5;

function aktionHinzufuegen($aktion) {
    global $letzteAktionen, $maxAktionen;

    if (count($letzteAktionen) >= $maxAktionen) {
        array_pop($letzteAktionen);
    }

    array_unshift($letzteAktionen, $aktion);
}

aktionHinzufuegen("Eingeloggt");
aktionHinzufuegen("Profil angesehen");
aktionHinzufuegen("Einstellungen aktualisiert");
aktionHinzufuegen("Formular abgeschickt");
aktionHinzufuegen("Ausgeloggt");
aktionHinzufuegen("Eingeloggt");

print_r($letzteAktionen);

Ausgabe:

Array
(
    [0] => Eingeloggt
    [1] => Ausgeloggt
    [2] => Formular abgeschickt
    [3] => Einstellungen aktualisiert
    [4] => Profil angesehen
)

In diesem Beispiel wird die Funktion aktionHinzufuegen() verwendet, um neue Aktionen zum Array $letzteAktionen hinzuzufügen. Wenn die Anzahl der Aktionen die $maxAktionen-Grenze überschreitet, wird array_pop() verwendet, um die älteste Aktion am Ende des Arrays zu entfernen. Auf diese Weise werden nur die neuesten Aktionen beibehalten und die älteren verworfen.

Entfernen des ersten Elements mit array_shift()

Ähnlich wie array_pop() entfernt die Funktion array_shift() das erste Element aus einem Array und gibt den Wert des entfernten Elements zurück. Diese Funktion ändert ebenfalls das ursprüngliche Array, indem sie das erste Element entfernt und alle verbleibenden Elemente verschiebt, um die Lücke zu füllen.

Hier ist ein Beispiel, das das Entfernen des ersten Elements aus einem Array mit array_shift() demonstriert:

$numbers = array(10, 20, 30, 40, 50);
$removed_number = array_shift($numbers);
echo "Entfernte Zahl: " . $removed_number . "\n";
print_r($numbers);

In diesem Beispiel haben wir ein Array $numbers mit fünf Elementen. Wir verwenden die Funktion array_shift(), um das erste Element aus dem Array zu entfernen. Das entfernte Element wird in der Variable $removed_number gespeichert.

Nach der Ausführung dieses Codes wird die Ausgabe wie folgt aussehen:

Entfernte Zahl: 10
Array
(
    [0] => 20
    [1] => 30
    [2] => 40
    [3] => 50
)

Die Funktion array_shift() hat das erste Element "10" aus dem Array $numbers entfernt und seinen Wert zurückgegeben. Das Array $numbers wird dann mit print_r() ausgegeben und zeigt, dass es jetzt die verbleibenden vier Elemente enthält, wobei ihre Indizes entsprechend verschoben wurden.

Wie array_pop() gibt auch array_shift() den Wert des entfernten Elements zurück. Wenn das Array leer ist, gibt array_shift() null zurück.

Beispiel: Verarbeiten einer Warteschlange

Angenommen, Sie haben eine Warteschlange von Aufgaben, die als Array dargestellt wird, und Sie möchten die Aufgaben in der Reihenfolge verarbeiten, in der sie hinzugefügt wurden. Sie können array_shift() verwenden, um die erste Aufgabe aus der Warteschlange zu entfernen und abzurufen.

$aufgabenWarteschlange = array("Aufgabe 1", "Aufgabe 2", "Aufgabe 3", "Aufgabe 4");

while (!empty($aufgabenWarteschlange)) {
    $aktuelleAufgabe = array_shift($aufgabenWarteschlange);
    echo "Verarbeite Aufgabe: " . $aktuelleAufgabe . "\n";
    // Hier würde die Aufgabenverarbeitung stattfinden
}

Ausgabe:

Verarbeite Aufgabe: Aufgabe 1
Verarbeite Aufgabe: Aufgabe 2
Verarbeite Aufgabe: Aufgabe 3
Verarbeite Aufgabe: Aufgabe 4

In diesem Beispiel wird array_shift() verwendet, um in jeder Iteration der Schleife die erste Aufgabe aus dem Array $aufgabenWarteschlange zu entfernen und abzurufen. Dies ermöglicht die Verarbeitung der Aufgaben in der Reihenfolge, in der sie zur Warteschlange hinzugefügt wurden.

Funktion Beschreibung
array_pop() Entfernt das letzte Element aus einem Array und gibt seinen Wert zurück
array_shift() Entfernt das erste Element aus einem Array, verschiebt die verbleibenden Elemente und gibt den Wert des entfernten Elements zurück