PHP Controlla se la chiave esiste

Esempio

Usa array_key_exists() o isset() o !empty() :

$map = [
    'foo' => 1,
    'bar' => null,
    'foobar' => '',
];

array_key_exists('foo', $map); // true
isset($map['foo']); // true
!empty($map['foo']); // true

array_key_exists('bar', $map); // true
isset($map['bar']); // false
!empty($map['bar']); // false

Si noti che isset() considera un elemento con valori null come inesistente. Mentre !empty() fa lo stesso per ogni elemento uguale a false (usando un confronto debole, ad esempio null , '' e 0 sono tutti trattati come falsi da !empty() ). Mentre isset($map['foobar']); è true !empty($map['foobar']) è false . Ciò può portare a errori (ad esempio, è facile dimenticare che la stringa '0' è considerata falsa), quindi l'uso di !empty() è spesso disapprovato.

Nota anche che isset() e !empty() funzioneranno (e restituiranno false) se $map non è affatto definita. Questo li rende in qualche modo soggetti a errori:

// Note "long" vs "lang", a tiny typo in the variable name.
$my_array_with_a_long_name = ['foo' => true];
array_key_exists('foo', $my_array_with_a_lang_name); // shows a warning
isset($my_array_with_a_lang_name['foo']); // returns false

Puoi anche controllare gli array ordinali:

$ord = ['a', 'b']; // equivalent to [0 => 'a', 1 => 'b']

array_key_exists(0, $ord); // true
array_key_exists(2, $ord); // false

Si noti che isset() ha prestazioni migliori rispetto a array_key_exists() poiché quest'ultimo è una funzione e il precedente è un costrutto linguistico.

Puoi anche usare key_exists() , che è un alias per array_key_exists() .