Signatur
Beschreibung
each() liest den aktuellen Eintrag des internen Arrayzeigers aus und gibt ihn als Array mit vier Elementen zurück: den numerischen Schlüsseln 0 und 1 sowie den assoziativen Schlüsseln key und value. Anschließend wird der interne Zeiger um eine Position vorgerückt.
Die Funktion wurde typischerweise zusammen mit list() in einer while-Schleife verwendet, um assoziative Arrays zu durchlaufen – eine Technik, die heute durch foreach vollständig ersetzt wurde.
Wichtig: each() ist seit PHP 7.2.0 als veraltet (deprecated) markiert und wurde in PHP 8.0.0 vollständig entfernt. Neuer Code sollte stattdessen foreach oder current()/key()/next() verwenden.
Hat der interne Arrayzeiger das Ende des Arrays bereits überschritten, gibt die Funktion false zurück, was das typische Schleifenabbruch-Kriterium darstellte.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array|object | Das Array (oder Objekt), dessen aktuelles Element gelesen und dessen Zeiger anschließend vorgerückt wird. Wird als Referenz übergeben, da der interne Zeiger verändert wird. |
Rückgabewert
0 enthält den Schlüssel, Index 1 den Wert, key den Schlüssel und value den Wert des aktuellen Elements. Ist der Arrayzeiger hinter dem letzten Element, wird false zurückgegeben.Beispiele
Klassische Verwendung mit list() und while (PHP < 7.2)
<?php
$fruits = [
'a' => 'Apfel',
'b' => 'Banane',
'c' => 'Kirsche',
];
reset($fruits);
while (list($key, $value) = each($fruits)) {
echo $key . ' => ' . $value . PHP_EOL;
}
Moderner Ersatz mit foreach (empfohlen ab PHP 7.2+)
<?php
// Empfohlene Alternative zu each() + list() + while:
$fruits = [
'a' => 'Apfel',
'b' => 'Banane',
'c' => 'Kirsche',
];
foreach ($fruits as $key => $value) {
echo $key . ' => ' . $value . PHP_EOL;
}
Rückgabestruktur von each() im Detail
<?php
$data = ['x' => 42];
reset($data);
$entry = each($data);
var_dump($entry);
// Index 0 = Schlüssel, 1 = Wert, 'key' = Schlüssel, 'value' = Wert
// Wichtig · Fallstricke
Deprecation & Entfernung: each() wurde in PHP 7.2.0 als veraltet markiert (Deprecation-Notice) und in PHP 8.0.0 vollständig entfernt. Jede Verwendung in modernem PHP führt zu einem fatalen Fehler.
Vor dem ersten Aufruf von each() empfiehlt es sich, reset() aufzurufen, um sicherzustellen, dass der interne Arrayzeiger am Anfang steht – andernfalls kann der erste Eintrag übersprungen werden, falls der Zeiger zuvor bereits bewegt wurde.
Als vollständiger Ersatz für while (list($k, $v) = each($arr)) genügt heute foreach ($arr as $k => $v), das lesbarer, schneller und ohne Zeiger-Seiteneffekte funktioniert.