Start · Sprachen · PHP · Referenz · key_exists

key_exists

Funktion

Alias von <code>array_key_exists()</code> — prüft, ob ein angegebener Schlüssel in einem Array existiert.

seit PHP 4.0.6 Kategorie: array

Signatur

key_exists(string|int $key, array $array): bool

Beschreibung

key_exists() ist ein vollständiger Alias der Funktion array_key_exists() und verhält sich in jeder Hinsicht identisch. Sie prüft, ob der angegebene Schlüssel ($key) im Array $array vorhanden ist, unabhängig davon, ob der zugehörige Wert null ist.

Im Gegensatz zu isset() gibt key_exists() auch dann true zurück, wenn der Schlüssel im Array existiert, sein Wert aber null ist. Dies ist ein wichtiger Unterschied, der in der Praxis häufig zu Fehlern führt, wenn fälschlicherweise isset() verwendet wird.

Da es sich um einen Alias handelt, wird in neuem Code die direkte Verwendung von array_key_exists() empfohlen, um die Abhängigkeit von Aliasen zu vermeiden, die in zukünftigen PHP-Versionen theoretisch entfernt werden könnten.

Parameter

Name Typ Default Beschreibung
$key Pflicht string|int Der zu suchende Schlüssel im Array. Kann ein string oder ein int sein.
$array Pflicht array Das Array, in dem nach dem Schlüssel gesucht wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Schlüssel im Array vorhanden ist, andernfalls false. Ein Schlüssel mit dem Wert null wird ebenfalls als vorhanden erkannt.

Beispiele

Einfache Schlüsselprüfung

<?php
$config = [
    'host' => 'localhost',
    'port' => 3306,
    'password' => null,
];

var_dump(key_exists('host', $config));     // true
var_dump(key_exists('password', $config)); // true  (Wert ist null!)
var_dump(key_exists('user', $config));     // false
bool(true) bool(true) bool(false)

Unterschied zu isset() bei null-Werten

<?php
$data = ['name' => null];

// key_exists / array_key_exists erkennt den Schlüssel korrekt
if (key_exists('name', $data)) {
    echo "Schlüssel 'name' existiert." . PHP_EOL;
}

// isset() gibt bei null-Werten false zurück – Vorsicht!
if (!isset($data['name'])) {
    echo "isset() meldet den Schlüssel als NICHT vorhanden (wegen null)." . PHP_EOL;
}
Schlüssel 'name' existiert. isset() meldet den Schlüssel als NICHT vorhanden (wegen null).

// Wichtig · Fallstricke

Alias-Warnung: key_exists() ist ein Alias von array_key_exists(). Es wird empfohlen, in neuem Code direkt array_key_exists() zu verwenden, da Aliase weniger stabil sind und in zukünftigen PHP-Versionen ggf. als veraltet markiert werden könnten.

Typ-Coercion: PHP wandelt Float-Schlüssel bei der Übergabe an ein Array automatisch in int um. Dies sollte beim Einsatz von key_exists() mit numerischen Schlüsseln bedacht werden.