Signatur
Beschreibung
prev() bewegt den internen Zeiger eines Arrays um eine Position nach hinten und gibt den Wert des Elements zurück, auf das der Zeiger danach zeigt. Die Funktion ist das Gegenstück zu next() und ermöglicht das rückwärtsgerichtete Durchlaufen eines Arrays mit dem internen Cursor.
Befindet sich der interne Zeiger bereits am Anfang des Arrays und es gibt kein vorheriges Element, gibt die Funktion false zurück. Achtung: Auch wenn ein Element den Wert false selbst enthält, wird false zurückgegeben – das kann zu Mehrdeutigkeiten führen. In solchen Fällen sollte key() verwendet werden, um zu prüfen, ob der Zeiger noch gültig ist.
prev() arbeitet mit dem internen Array-Cursor, der auch von current(), next(), reset(), end() und key() genutzt wird. Das Array wird als Referenz übergeben, damit der interne Zustand persistent bleibt. Die Funktion eignet sich für einfache, sequenzielle Traversierungen, ohne einen externen Index verwalten zu müssen.
Für moderne Anwendungsfälle sind Iteratoren oder foreach-Schleifen oft die bessere Wahl. prev() ist jedoch nützlich, wenn man innerhalb einer manuellen Cursor-Logik rückwärts navigieren möchte, z. B. in einfachen Menü- oder Navigationsstrukturen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array|object | Das Array (als Referenz), dessen interner Zeiger zurückgesetzt werden soll. |
Rückgabewert
false zurück, wenn kein vorheriges Element mehr existiert (d. h. der Zeiger bereits am Anfang des Arrays steht).Beispiele
Einfaches Vor- und Zurückblättern in einem Array
<?php
$fruits = ['Apfel', 'Banane', 'Kirsche', 'Dattel'];
// Zeiger an das Ende setzen
end($fruits);
echo current($fruits) . "\n"; // Dattel
// Einen Schritt zurück
prev($fruits);
echo current($fruits) . "\n"; // Kirsche
// Noch einen Schritt zurück
prev($fruits);
echo current($fruits) . "\n"; // Banane
// Zurück zum Anfang
prev($fruits);
echo current($fruits) . "\n"; // Apfel
// Über den Anfang hinaus
$result = prev($fruits);
var_dump($result); // bool(false)
Rückwärts durch ein Array iterieren mit prev()
<?php
$zahlen = [10, 20, 30, 40, 50];
// Zeiger ans Ende setzen und rückwärts durchlaufen
$wert = end($zahlen);
while ($wert !== false) {
echo $wert . "\n";
$wert = prev($zahlen);
}
Mehrdeutigkeit bei false-Werten im Array erkennen
<?php
$data = [true, false, 'Ende'];
end($data);
prev($data); // Zeigt jetzt auf false
// current() gibt false zurück – ist es ein echter Wert oder das Ende?
$wert = current($data);
var_dump($wert); // bool(false) – mehrdeutig!
var_dump(key($data)); // int(1) – key() gibt NULL zurück wenn Zeiger ungültig
// Wichtig · Fallstricke
Mehrdeutigkeit: Da prev() sowohl bei einem enthaltenen false-Wert als auch beim Erreichen des Array-Anfangs false zurückgibt, sollte zur sicheren Unterscheidung immer key() herangezogen werden: Ist der Zeiger ungültig (hinter dem Anfang), gibt key() null zurück.
Referenzübergabe: Das Array wird als Referenz übergeben, da prev() den internen Zeiger des Arrays verändert. Übergabe einer kopierten Variable ändert den Cursor der Kopie, nicht des Originals.
Objekte: Seit PHP 7.0 ist die Übergabe von Objekten an Cursor-Funktionen wie prev() als veraltet zu betrachten; ab PHP 8.1 wird eine Warnung ausgegeben. Für Objekte sollten stattdessen Iteratoren eingesetzt werden.