Die Funktion array_pop() entfernt das letzte Element aus einem Array und gibt es zurück. Das ist besonders praktisch, wenn ein Array als Stapel (Stack) verwendet wird, also nach dem LIFO-Prinzip (Last In, First Out).
Syntax und Rückgabewert
array_pop() erwartet genau einen Parameter: das Array, aus dem das letzte Element entfernt werden soll. Das Array wird dabei direkt verändert, weil PHP es intern als Referenz behandelt. Der Rückgabewert entspricht dem entfernten Element. Ist das Array leer, gibt die Funktion null zurück.
<?php
$farben = ['Rot', 'Grün', 'Blau'];
$letztes = array_pop($farben);
echo $letztes; // Blau
print_r($farben);
/* Ausgabe:
Array ( [0] => Rot [1] => Grün ) */
?>
In diesem Beispiel wird 'Blau' aus dem Array entfernt und in $letztes gespeichert. Das Array $farben enthält danach nur noch zwei Elemente.
Praxisbeispiel: Aufgaben abarbeiten
Ein typischer Anwendungsfall ist das Abarbeiten von Einträgen aus einer Liste. Mit array_pop() lässt sich ein Array Element für Element von hinten leeren:
<?php
$aufgaben = [
'Backup erstellen',
'Cache leeren',
'Logs archivieren'
];
while ($aufgabe = array_pop($aufgaben)) {
echo 'Erledigt: ' . $aufgabe . '<br>';
}
/* Ausgabe:
Erledigt: Logs archivieren
Erledigt: Cache leeren
Erledigt: Backup erstellen */
?>
Die Aufgaben werden in umgekehrter Reihenfolge abgearbeitet, weil array_pop() immer das letzte Element entnimmt. Sobald das Array leer ist, gibt die Funktion null zurück und die Schleife endet.
Alternative: end() liest ohne zu entfernen
Wer nur das letzte Element lesen möchte, ohne es aus dem Array zu löschen, kann stattdessen end() verwenden:
<?php
$zahlen = [10, 20, 30];
$letztes = end($zahlen);
echo $letztes; // 30
echo count($zahlen); // 3
?>
Im Unterschied zu array_pop() bleibt das Array bei end() vollständig erhalten. Die Funktion setzt lediglich den internen Zeiger auf das letzte Element.
Leeres Array behandeln
Wird array_pop() auf ein leeres Array angewendet, gibt die Funktion null zurück. Es empfiehlt sich daher, den Rückgabewert zu prüfen:
<?php
$warenkorb = [];
$artikel = array_pop($warenkorb);
if ($artikel === null) {
echo 'Der Warenkorb ist leer.';
}
?>
Durch die explizite Prüfung auf null lässt sich sauber zwischen einem leeren Array und einem tatsächlichen Wert unterscheiden.