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$keyeinem dieser Typen entsprechen.$array— das zu durchsuchende array.- Rückgabewert —
true, wenn$keyein Schlüssel von$arrayist, andernfallsfalse.
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.
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)gibttruezurück, wenn der Schlüssel definiert ist — auch wenn sein Wertnullist.isset($array[$key])gibtfalsezurück, wenn der Wertnullist, daisset()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 nullAusgabe:
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
nullgesetzten 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']gibtfalsezurück. Verwendein_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.