W3docs

Die PHP-Funktion "array_key_exists" verstehen

Die PHP-Funktion array_key_exists prüft, ob ein bestimmter Schlüssel in einem array vorhanden ist, und gibt einen boolean-Wert zurück.

array_key_exists() ist eine eingebaute PHP-Funktion, die prüft, ob ein bestimmter Schlüssel in einem array vorhanden ist. Sie gibt true zurück, wenn der Schlüssel vorhanden ist, und false, wenn nicht — unabhängig davon, welcher Wert unter diesem Schlüssel gespeichert ist. Diese Seite erklärt, wie die Funktion funktioniert, wie sie sich von isset() unterscheidet (die häufigste Fehlerquelle) und wann man welche verwenden sollte.

Syntax

array_key_exists(string|int $key, array $array): bool
  • $key — der Schlüssel, nach dem gesucht wird. Array-Schlüssel in PHP sind immer Integer oder Strings, daher muss $key einem dieser Typen entsprechen.
  • $array — das zu durchsuchende array.
  • Rückgabewerttrue, wenn $key ein Schlüssel von $array ist, andernfalls false.

Beachte, dass die Funktion den Schlüssel prüft, nicht den Wert. Um stattdessen nach einem Wert zu suchen, verwende in_array() oder array_search().

Einfaches Beispiel

array_key_exists() ist am nützlichsten bei assoziativen Arrays, bei denen Schlüssel benannt statt nummeriert sind.

php— editable, runs on the server

Die Ausgabe lautet:

The key 'first_name' exists in the array.

Die Funktion funktioniert auch mit Integer-Schlüsseln — einschließlich der automatischen numerischen Indizes eines einfachen Arrays:

<?php

$colors = ['red', 'green', 'blue']; // keys are 0, 1, 2

var_dump(array_key_exists(2, $colors)); // bool(true)
var_dump(array_key_exists(3, $colors)); // bool(false)

Ausgabe:

bool(true)
bool(false)

array_key_exists() vs. isset()

Dies ist das Wichtigste, was man über die Funktion verstehen muss. Beide können einen Schlüssel prüfen, beantworten jedoch unterschiedliche Fragen:

  • array_key_exists($key, $array) gibt true zurück, wenn der Schlüssel definiert ist — auch wenn sein Wert null ist.
  • isset($array[$key]) gibt false zurück, wenn der Wert null ist, da isset() prüft, ob eine Variable existiert und nicht null ist.
<?php

$data = ['name' => null];

var_dump(array_key_exists('name', $data)); // bool(true)  — the key is there
var_dump(isset($data['name']));            // bool(false) — value is null

Ausgabe:

bool(true)
bool(false)

Verwende array_key_exists(), wenn ein null-Wert bedeutsam ist (z. B. „das Feld wurde gesendet, aber leer gelassen"). Verwende isset(), wenn es dir nur darum geht, ob ein verwendbarer, nicht-null-Wert vorhanden ist — es ist im häufigen Fall auch etwas schneller.

Wann sollte man es verwenden?

  • Um Warnungen über „undefined array key" zu vermeiden, bevor ein möglicherweise fehlender Schlüssel gelesen wird.
  • Um zu validieren, dass erforderliche Schlüssel in einer Konfiguration oder Formulareingabe vorhanden sind.
  • Um einen auf null gesetzten Schlüssel von einem tatsächlich fehlenden Schlüssel zu unterscheiden.

Häufige Stolperfallen

  • Die Funktion unterscheidet bei String-Schlüsseln zwischen Groß- und Kleinschreibung. 'Name' und 'name' sind unterschiedliche Schlüssel.
  • Sie durchsucht keine verschachtelten Arrays. Sie prüft nur die oberste Ebene des übergebenen Arrays.
  • Sie berücksichtigt keine Werte. Die Suche nach 'John' als Schlüssel in ['first_name' => 'John'] gibt false zurück. Verwende in_array(), um nach Werten zu suchen.
  • Um alle Schlüssel auf einmal aufzulisten, siehe array_keys().

Fazit

array_key_exists() ist ein kleines, aber unverzichtbares Werkzeug für die sichere Arbeit mit PHP-Arrays. Greife darauf zurück, wenn du wissen möchtest, ob ein Schlüssel definiert ist — und denke daran, dass die Funktion im Gegensatz zu isset() einen Schlüssel mit dem Wert null als vorhanden behandelt.

Übungen

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