Entendiendo la función PHP "array_key_exists"
La función PHP array_key_exists verifica si una clave específica existe en un array. Devuelve un valor boolean true o false.
array_key_exists() es una función integrada de PHP que comprueba si una clave dada existe en un array. Devuelve true cuando la clave está presente y false cuando no lo está — independientemente del valor almacenado bajo esa clave. Esta página explica cómo funciona la función, en qué se diferencia de isset() (la fuente más común de errores), y cuándo deberías usar cada una.
Sintaxis
array_key_exists(string|int $key, array $array): bool$key— la clave a buscar. Las claves de array en PHP son siempre enteros o strings, por lo que$keydebe ser de uno de esos tipos.$array— el array en el que buscar.- Valor de retorno —
truesi$keyes una clave de$array, de lo contrariofalse.
Ten en cuenta que comprueba la clave, no el valor. Para buscar un valor en su lugar, usa in_array() o array_search().
Ejemplo básico
array_key_exists() es más útil con arrays asociativos, donde las claves tienen nombre en lugar de ser numéricas.
La salida es:
The key 'first_name' exists in the array.También funciona con claves enteras — incluidos los índices numéricos automáticos de una lista simple:
<?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)Salida:
bool(true)
bool(false)array_key_exists() vs. isset()
Este es el aspecto más importante que debes entender sobre la función. Ambas pueden comprobar una clave, pero responden a preguntas distintas:
array_key_exists($key, $array)devuelvetruesi la clave está definida incluso cuando su valor esnull.isset($array[$key])devuelvefalsecuando el valor esnull, porqueisset()comprueba que una variable existe y no es 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 nullSalida:
bool(true)
bool(false)Usa array_key_exists() cuando un valor null tiene significado (por ejemplo, "el campo fue enviado pero se dejó en blanco"). Usa isset() cuando solo te importa si hay un valor utilizable y no null — además es ligeramente más rápida para el caso común.
Cuándo usarla
- Protegerse contra advertencias de "clave de array indefinida" antes de leer una clave que podría no existir.
- Validar que las claves requeridas existen en la configuración o en la entrada de un formulario.
- Distinguir una clave con valor
nullde una clave que genuinamente no existe.
Errores comunes
- Distingue mayúsculas y minúsculas en claves string.
'Name'y'name'son claves diferentes. - No busca en arrays anidados. Solo comprueba el nivel superior del array que se le pasa.
- No examina los valores. Buscar
'John'como clave en['first_name' => 'John']devuelvefalse. Usain_array()para buscar por valor. - Para listar todas las claves de una vez, consulta
array_keys().
Conclusión
array_key_exists() es una herramienta pequeña pero esencial para trabajar de forma segura con arrays de PHP. Úsala cuando necesites saber si una clave está definida — y recuerda que, a diferencia de isset(), considera que una clave con valor null existe.