W3docs

reset()

Die PHP-Funktion reset() setzt den internen Zeiger eines Arrays auf das erste Element zurück und gibt dessen Wert zurück.

Jedes PHP-Array besitzt einen versteckten internen Zeiger, der das „aktuelle" Element markiert. Funktionen wie current(), key(), next() und prev() lesen und verschieben diesen Zeiger. Nachdem Sie ein Array durchlaufen haben, befindet sich der Zeiger am Ende (oder irgendwo in der Mitte), und der nächste Lesezugriff gibt das falsche Element zurück. Die Funktion reset() setzt diesen Zeiger wieder auf das allererste Element zurück, sodass Sie von vorne beginnen können.

Dieser Artikel erklärt, wie der interne Zeiger funktioniert, was reset() zurückgibt, wo häufige Fallstricke lauern und wie die Funktion mit den anderen Array-Zeiger-Funktionen zusammenspielt.

Was ist reset()?

reset() ist eine eingebaute PHP-Funktion, die den internen Zeiger eines Arrays auf das erste Element setzt und den Wert dieses Elements zurückgibt. Sie ist das Gegenstück zu end(), das den Zeiger auf das letzte Element setzt.

Entscheidend ist, dass reset() den Zeiger des Arrays verändert — deshalb erwartet die Signatur das Array per Referenz (&$array). Sie übergeben eine Variable, kein Literal, und reset() ändert den Zeigerzustand dieser Variable direkt.

Syntax

reset(array &$array): mixed

Parameter

ParameterBeschreibung
$arrayDas Array, dessen internen Zeiger Sie zurücksetzen möchten. Es wird per Referenz übergeben, daher muss es eine Variable sein (ein Array-Literal kann nicht direkt übergeben werden).

Rückgabewert

reset() gibt den Wert des ersten Elements des Arrays zurück, oder false, wenn das Array leer ist.

Ein subtiler Fallstrick: Da ein leeres Array false zurückgibt, lässt sich „leeres Array" nicht zuverlässig von „erstes Element ist buchstäblich false" unterscheiden, indem man nur den Rückgabewert prüft. Wenn Sie diese Unterscheidung benötigen, prüfen Sie das Array zuerst mit empty() oder count().

Beispiele

Schauen wir uns an, wie sich reset() mit verschiedenen Array-Typen verhält.

Beispiel 1: Zurücksetzen des Zeigers eines numerischen Arrays

Beispiel zum Zurücksetzen des Zeigers eines numerischen Arrays in PHP

php— editable, runs on the server

In diesem Beispiel haben wir ein Array mit Farben. Wir rufen die Funktion reset() auf, um den Zeiger auf den Anfang des Arrays zurückzusetzen. Anschließend rufen wir current() auf, um das erste Element zu erhalten, das 'red' ist.

Beispiel 2: Zurücksetzen des Zeigers eines assoziativen Arrays

Beispiel zum Zurücksetzen des Zeigers eines assoziativen Arrays in PHP

php— editable, runs on the server

In diesem Beispiel haben wir ein assoziatives Array mit den Details einer Person. Wir rufen die Funktion reset() auf, um den Zeiger auf den Anfang des Arrays zurückzusetzen. Anschließend rufen wir key() und current() auf, um das Schlüssel-Wert-Paar des ersten Elements zu erhalten.

Beispiel 3: Warum reset() nach dem Iterieren wichtig ist

Dies ist der häufigste praktische Grund, reset() aufzurufen. Funktionen, die den Zeiger verschieben (next(), end(), eine manuelle while-Schleife), lassen ihn an der aktuellen Position stehen. Ohne reset() setzt der nächste Lesezugriff genau dort an, wo er aufgehört hat:

<?php

$colors = ['red', 'green', 'blue'];

// Advance the pointer to the end
end($colors);          // pointer now at 'blue'
echo current($colors); // outputs 'blue'

echo "\n";

// Rewind it
reset($colors);
echo current($colors); // outputs 'red'

reset() gibt ebenfalls den ersten Wert zurück, sodass Sie ihn direkt abgreifen können: $first = reset($colors); liefert 'red'.

reset() vs. foreach

Ein häufiger Irrtum: Eine foreach-Schleife verwendet den internen Zeiger des Arrays nicht. PHP iteriert über eine interne Kopie, sodass der Zeiger unverändert bleibt und Sie nach einem foreach nicht reset() aufrufen müssen:

<?php

$colors = ['red', 'green', 'blue'];

foreach ($colors as $color) {
    // ... do something
}

// Pointer was never moved by foreach
echo current($colors); // outputs 'red'

Sie benötigen reset() nur, wenn Sie (oder eine von Ihnen aufgerufene Funktion) den Zeiger mit den zeigerbasierten Funktionen verschieben. Weitere Informationen zur Funktionsweise von Schleifen finden Sie unter foreach.

Häufige Fallstricke

  • Übergeben Sie eine Variable, kein Literal. Da das Argument per Referenz übergeben wird, löst reset(['a', 'b']) in modernem PHP einen Fehler aus. Weisen Sie das Array zuerst einer Variablen zu.
  • reset() verändert den Zustand. Wenn ein anderer Teil Ihres Codes auf die aktuelle Zeigerposition angewiesen ist, ändert der Aufruf von reset() diese stillschweigend. Übergeben Sie eine Kopie, wenn Sie den ursprünglichen Zeiger beibehalten müssen.
  • false ist mehrdeutig. Ein false-Rückgabewert kann sowohl „leeres Array" als auch „erster Wert ist false" bedeuten. Schützen Sie sich mit empty($array), wenn dies relevant ist.

Verwandte Funktionen

FunktionSetzt den Zeiger aufGibt zurück
reset()Erstes ElementErsten Wert (oder false)
end()Letztes ElementLetzten Wert (oder false)
next()Nächstes ElementNächsten Wert (oder false)
prev()Vorheriges ElementVorherigen Wert (oder false)
current()(keine Bewegung)Aktuellen Wert
key()(keine Bewegung)Aktuellen Schlüssel

Fazit

reset() setzt den internen Zeiger eines Arrays auf das erste Element zurück und gibt den Wert dieses Elements zurück. Verwenden Sie die Funktion immer dann, wenn eine vorherige Operation (next(), end() oder eine manuelle Zeigerschleife) den Zeiger irgendwo anders als am Anfang positioniert hat und Sie wieder von vorne lesen möchten. Denken Sie daran, dass foreach den Zeiger nicht verändert, dass das Argument eine Variable sein muss und dass ein false-Rückgabewert bei leeren Arrays mehrdeutig ist.

Übung

Übung
Was macht die Funktion reset() in PHP?
Was macht die Funktion reset() in PHP?
Was this page helpful?