W3docs

key()

Erfahren Sie, wie PHPs key()-Funktion den Schlüssel des aktuellen Elements zurückgibt und wie man sie mit next(), prev() und current() nutzt.

Einführung

Jedes PHP-Array hat einen internen Zeiger, der eines der Elemente als das „aktuelle" markiert. Die Funktion key() liest den Schlüssel (nicht den Wert) des Elements, auf das dieser Zeiger gerade zeigt. Sie ist das Gegenstück zu current(), das den Wert an derselben Position zurückgibt, und wird am häufigsten zusammen mit next() und prev() verwendet, um ein Array manuell zu durchlaufen. Dieses Kapitel erklärt, was key() zurückgibt, wie sich der interne Zeiger bewegt, welche Sonderfälle null zurückliefern und in welchen praktischen Situationen key() wirklich nützlich ist.

Die key()-Funktion verstehen

key() gibt den Schlüssel des Elements zurück, auf das der interne Zeiger des Arrays gerade zeigt. Der Zeiger wird dabei nicht weitergesetzt — er liest nur die aktuelle Position aus. Wenn der Zeiger hinter das letzte Element bewegt wurde (oder das Array leer ist), gibt key() null zurück.

Das unterscheidet sich von array_key_exists(), das prüft, ob ein bestimmter Schlüssel vorhanden ist, und von array_keys(), das alle Schlüssel auf einmal zurückgibt. key() betrifft eine einzelne Position: die aktuelle Position des Zeigers.

Syntax

key(array $array): int|string|null

Die Funktion erwartet ein einziges Argument — das zu lesende Array — und gibt den aktuellen Schlüssel als int oder string zurück, oder null, wenn der Zeiger außerhalb des gültigen Bereichs liegt.

Beispiel 1: Den aktuellen Schlüssel lesen

Wenn Sie ein Array erstellen oder reset() darauf anwenden, steht der Zeiger auf dem ersten Element, sodass key() den ersten Schlüssel zurückgibt.

<?php

$fruits = ["apple", "banana", "cherry"];
echo key($fruits);
?>
Output: 0

Der Zeiger steht auf dem ersten Element, dessen Schlüssel der Index 0 ist, daher gibt key() den Wert 0 zurück.

Beispiel 2: Den Zeiger mit next() und prev() bewegen

key() wird nützlich, sobald der Zeiger bewegt wird. next() setzt ihn einen Schritt vor und prev() setzt ihn zurück; key() zeigt an, wo er jeweils gelandet ist.

<?php

$capitals = ["France" => "Paris", "Japan" => "Tokyo", "Egypt" => "Cairo"];

echo "Current key: " . key($capitals) . "\n";
next($capitals);
echo "After next(): " . key($capitals) . "\n";
prev($capitals);
echo "After prev(): " . key($capitals) . "\n";
?>
Output:
Current key: France
After next(): Japan
After prev(): France

Da die Schlüssel Strings sind, gibt key() an jeder Zeigerposition den String-Schlüssel zurück statt eines numerischen Index.

Ein Array mit key() und current() durchlaufen

Ein verbreitetes Muster ist das manuelle Iterieren, wenn sowohl der Schlüssel als auch der Wert benötigt werden. Die Schleife endet, wenn key() null zurückgibt — das signalisiert, dass der Zeiger das Ende des Arrays überschritten hat.

<?php

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

while (($key = key($colors)) !== null) {
    echo $key . " => " . current($colors) . "\n";
    next($colors);
}
?>
Output:
0 => red
1 => green
2 => blue

Verwenden Sie den strikten Vergleich !== null: Eine Schleife wie while (key($arr)) würde bei einem falschen Schlüssel wie 0 oder einem leeren String vorzeitig abbrechen. In den meisten Fällen ist eine foreach-Schleife übersichtlicher, doch die manuelle Zeigersteuerung mit key()/next() ist praktisch, wenn Sie das Array bedingt oder aus mehreren verschachtelten Schleifen heraus durchlaufen.

Wann key() null zurückgibt

key() gibt null in zwei Situationen zurück: wenn das Array leer ist oder wenn der interne Zeiger hinter das letzte Element bewegt wurde.

<?php

$data = ["a" => 1, "b" => 2];

var_dump(key([]));   // empty array

end($data);          // pointer on last element
next($data);         // pointer pushed past the end
var_dump(key($data));
?>
Output:
NULL
NULL

Beide Aufrufe geben NULL zurück: der erste, weil das Array keine Elemente hat, der zweite, weil next() den Zeiger hinter "b" verschoben hat. Ein Aufruf von reset($data) würde den Zeiger wieder auf das erste Element setzen, sodass key() erneut "a" zurückgibt.

Häufige Fallstricke

  • key() liest, es bewegt nie. Zweimaliges Aufrufen hintereinander gibt denselben Schlüssel zurück. Verwenden Sie next() oder prev(), um die Position zu ändern.
  • Übergabe per Referenz. key() arbeitet am internen Zeiger des Arrays und kann daher nicht direkt auf den Rückgabewert einer Funktion angewendet werden — weisen Sie ihn zuerst einer Variablen zu.
  • null-Wert vs. null-Schlüssel. Wenn der Wert an der aktuellen Position null ist, gibt key() trotzdem den echten Schlüssel zurück; nur ein Zeiger außerhalb des gültigen Bereichs liefert einen null-Schlüssel.
  • foreach für einfache Iteration bevorzugen. Greifen Sie auf key()/next()/prev() zurück, wenn Sie explizite, schrittweise Zeigersteuerung benötigen.

Fazit

Die Funktion key() gibt den Schlüssel des Elements zurück, auf das der interne Zeiger eines Arrays zeigt, und liefert null, wenn der Zeiger außerhalb des gültigen Bereichs liegt. Zusammen mit current(), next() und prev() ermöglicht sie, ein Array Schritt für Schritt zu durchlaufen und dabei jeden Schlüssel auszulesen — ein präzises Werkzeug für die Fälle, in denen ein einfaches foreach nicht ausreicht.

Übungen

Übung
Was ist der Zweck der 'key()'-Funktion in PHP, wie auf der bereitgestellten Seite beschrieben?
Was ist der Zweck der 'key()'-Funktion in PHP, wie auf der bereitgestellten Seite beschrieben?
Was this page helpful?