Start · Sprachen · PHP · Referenz · each

each

Funktion

Gibt das aktuelle Schlüssel-Wert-Paar eines Arrays als vierElementiges Array zurück und rückt den internen Arrayzeiger um eine Position vor.

seit PHP 4.0.0 Kategorie: array

Signatur

each(array|object &$array): array

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

Typ
array|false
Beschreibung
Gibt ein Array mit vier Elementen zurück: Index 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;
}
a => Apfel b => Banane c => Kirsche

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;
}
a => Apfel b => Banane c => Kirsche

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
array(4) { [1]=> int(42) ["value"]=> int(42) [0]=> string(1) "x" ["key"]=> string(1) "x" }

// 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.