W3docs

next()

Erfahren Sie, wie PHP next() den internen Zeiger eines Arrays vorwärts bewegt, was zurückgegeben wird und wie es mit reset(), current() und prev() zusammenarbeitet.

Die PHP next() Funktion

Jedes PHP-Array besitzt einen internen Zeiger, der ein Element als das „aktuelle" markiert. Die Funktion next() bewegt diesen Zeiger um eine Position vorwärts und gibt den Wert zurück, auf dem er landet. Sie gehört zu einer kleinen Familie von Zeigerfunktionen — reset(), current(), prev() und end() — die es ermöglichen, ein Array schrittweise zu durchlaufen, ohne einen eigenen Indexzähler schreiben zu müssen. Diese Anleitung erklärt genau, was next() zurückgibt, wie es den Zeiger verändert und welche Sonderfälle häufig zu Problemen führen.

Syntax und Rückgabewert

next(array &$array): mixed

Aus dieser Signatur ergeben sich drei Details:

  • Das Array wird als Referenz übergeben (&$array). next() gibt kein neues Array zurück — es verändert den internen Zeiger des übergebenen Arrays.
  • Es gibt den Wert des nächsten Elements zurück, nicht den des aktuellen. Um das Element unter dem Zeiger zu lesen, ohne ihn zu bewegen, verwenden Sie current().
  • Am Ende des Arrays gibt es false zurück und parkt den Zeiger hinter dem letzten Element. Alle weiteren Aufrufe geben ebenfalls false zurück.

Wenn ein Skript ein Array zum ersten Mal verwendet, befindet sich der Zeiger auf dem ersten Element. Der allererste Aufruf von next() gibt daher bereits das zweite Element zurück — eine häufige Quelle von Off-by-one-Fehlern.

Ein einfaches next()-Beispiel

Das folgende Beispiel liest das erste Element mit current() und bewegt den Zeiger anschließend zweimal vorwärts. Der letzte Aufruf geht über das Ende hinaus und gibt false zurück:

php— editable, runs on the server

Die Ausgabe lautet:

apple
banana
cherry
bool(false)

Ein Array mit next() durchlaufen

Ein gängiges Muster ist, zunächst reset() aufzurufen (um sicherzustellen, dass der Zeiger am Anfang steht), das erste Element auszugeben und dann mit next() zu iterieren, bis false zurückgegeben wird:

php— editable, runs on the server

Dies gibt aus:

red
green
blue

Beachten Sie den strikten !== false-Vergleich — der nächste Abschnitt erklärt, warum eine lockere Prüfung gefährlich ist.

Die Falle mit Falsy-Werten

next() gibt false am Ende des Arrays zurück, aber es gibt auch false zurück, wenn der tatsächliche Wert eines Elements false, 0, "" oder null ist. Eine lockere Bedingung wie while (next($array)) stoppt daher, sobald sie auf einen dieser Werte trifft:

php— editable, runs on the server

Da next() für das zweite Element 0 zurückgibt, wird der Schleifenrumpf nie ausgeführt — die Ausgabe ist lediglich:

done

Bei Arrays, die möglicherweise Falsy-Werte enthalten, empfiehlt sich foreach (das den internen Zeiger vollständig ignoriert) oder die Prüfung von key(), das null nur am echten Ende des Arrays zurückgibt.

Wie next() mit den anderen Zeigerfunktionen zusammenhängt

next() arbeitet selten allein. Es ergänzt reset(), current(), prev(), end() und key(), um vollständige manuelle Kontrolle über den Cursor eines Arrays zu ermöglichen:

FunktionBewegt den Zeiger?Gibt zurück
current()NeinElement unter dem Zeiger
next()Vorwärts um einsNeues aktuelles Element (oder false am Ende)
prev()Zurück um einsNeues aktuelles Element (oder false vor dem Anfang)
reset()Zum erstenErstes Element
end()Zum letztenLetztes Element
key()NeinSchlüssel des aktuellen Elements (oder null am Ende)

Das folgende Beispiel verwendet end() und prev() zusammen mit next(), um zu zeigen, wie sich der Zeiger in einem Durchlauf in beide Richtungen bewegen kann:

php— editable, runs on the server

Ausgabe:

30
20
30
10

Wann sollte next() verwendet werden?

Für die einfache Iteration über alle Elemente ist eine foreach-Schleife klarer und sicherer — sie stolpert nie über Falsy-Werte. Greifen Sie auf next() nur zurück, wenn Sie wirklich explizite, schrittweise Kontrolle darüber benötigen, wo der Zeiger steht, beispielsweise wenn Sie vorausschauen möchten, während Sie noch in der Mitte einer Schleife sind.

Fazit

Die Funktion next() bewegt den internen Zeiger eines Arrays um einen Schritt vorwärts und gibt den Wert zurück, auf dem er landet; nach dem letzten Element wird false zurückgegeben. Da sie auf dem internen Zeiger basiert und das Ende mit false signalisiert, arbeitet sie Hand in Hand mit reset(), current() und prev() — vergessen Sie dabei nicht die Falle mit Falsy-Werten, bei der eine lockere Schleifenbedingung zu früh abbricht. Verwenden Sie für die alltägliche Iteration foreach; wählen Sie next(), wenn Sie präzise Kontrolle über den Array-Cursor benötigen.

Übungen

Übung
Was ist die korrekte Verwendung der 'next'-Funktion in PHP?
Was ist die korrekte Verwendung der 'next'-Funktion in PHP?
Was this page helpful?