W3docs

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 $key debe ser de uno de esos tipos.
  • $array — el array en el que buscar.
  • Valor de retornotrue si $key es una clave de $array, de lo contrario false.

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.

php— editable, runs on the server

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) devuelve true si la clave está definida incluso cuando su valor es null.
  • isset($array[$key]) devuelve false cuando el valor es null, porque isset() 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 null

Salida:

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 null de 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'] devuelve false. Usa in_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.

Práctica

Práctica
¿Qué hace la función array_key_exists() en PHP?
¿Qué hace la función array_key_exists() en PHP?
Was this page helpful?