Capire la funzione PHP "array_key_exists"
La funzione PHP array_key_exists verifica se una chiave specificata esiste in un array e restituisce un valore boolean.
array_key_exists() è una funzione PHP integrata che verifica se una determinata chiave esiste in un array. Restituisce true quando la chiave è presente e false quando non lo è — indipendentemente dal valore memorizzato sotto quella chiave. Questa pagina spiega come funziona la funzione, come si differenzia da isset() (la fonte più comune di bug) e quando utilizzare ciascuna delle due.
Sintassi
array_key_exists(string|int $key, array $array): bool$key— la chiave da cercare. Le chiavi degli array in PHP sono sempre interi o stringhe, quindi$keydeve essere di uno di questi tipi.$array— l'array in cui cercare.- Valore restituito —
truese$keyè una chiave di$array, altrimentifalse.
Si noti che controlla la chiave, non il valore. Per cercare un valore, utilizzare in_array() o array_search().
Esempio di base
array_key_exists() è più utile con gli array associativi, dove le chiavi sono denominate anziché numerate.
L'output è:
The key 'first_name' exists in the array.Funziona anche con chiavi intere — inclusi gli indici numerici automatici di un semplice elenco:
<?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)Output:
bool(true)
bool(false)array_key_exists() vs. isset()
Questo è l'aspetto più importante da capire sulla funzione. Entrambe possono verificare la presenza di una chiave, ma rispondono a domande diverse:
array_key_exists($key, $array)restituiscetruese la chiave è definita anche quando il suo valore ènull.isset($array[$key])restituiscefalsequando il valore ènull, perchéisset()verifica che una variabile esista e non sia null.
<?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 nullOutput:
bool(true)
bool(false)Utilizzare array_key_exists() quando un valore null è significativo (ad es. "il campo è stato inviato ma lasciato vuoto"). Utilizzare isset() quando interessa solo sapere se è presente un valore utilizzabile e non null — è anche leggermente più veloce nel caso comune.
Quando utilizzarla
- Per evitare avvisi "undefined array key" prima di leggere una chiave che potrebbe essere assente.
- Per verificare che le chiavi obbligatorie esistano nella configurazione o negli input del modulo.
- Per distinguere una chiave impostata su
nullda una chiave genuinamente assente.
Problemi comuni
- Fa distinzione tra maiuscole e minuscole per le chiavi stringa.
'Name'e'name'sono chiavi diverse. - Non ricerca array nidificati. Controlla solo il livello superiore dell'array passato.
- Non esamina i valori. Cercare
'John'come chiave in['first_name' => 'John']restituiscefalse. Utilizzarein_array()per cercare per valore. - Per elencare tutte le chiavi contemporaneamente, vedere
array_keys().
Conclusione
array_key_exists() è uno strumento piccolo ma essenziale per lavorare in sicurezza con gli array PHP. Ricorrere ad essa quando si ha bisogno di sapere se una chiave è definita — e ricordare che, a differenza di isset(), tratta una chiave che contiene null come esistente.