W3docs

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 $key deve essere di uno di questi tipi.
  • $array — l'array in cui cercare.
  • Valore restituitotrue se $key è una chiave di $array, altrimenti false.

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.

php— editable, runs on the server

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) restituisce true se la chiave è definita anche quando il suo valore è null.
  • isset($array[$key]) restituisce false quando 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 null

Output:

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 null da 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'] restituisce false. Utilizzare in_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.

Esercitazione

Pratica
Cosa fa la funzione array_key_exists() in PHP?
Cosa fa la funzione array_key_exists() in PHP?
Was this page helpful?