Menu

PHP array_search(): encontrar la clave de un valor

array_search($value, $array) devuelve la clave del primer elemento igual a $value, o false si no hay ninguno. Como la clave puede ser 0, comprueba siempre el resultado con !== false. Aprende las búsquedas estrictas, a encontrar todas las coincidencias, a buscar en un array multidimensional con array_column y a buscar sin distinguir mayúsculas.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

array_search($value, $array) devuelve la clave del primer elemento igual a $value, o false si ningún elemento coincide. Como una clave encontrada puede ser 0, comprueba el resultado con !== false, como en if (($key = array_search('pear', $fruits)) !== false).

Si solo necesitas un sí o un no, in_array() lo dice directamente. array_search() es para cuando necesitas saber dónde está el valor, por ejemplo para cambiarlo o eliminarlo.

La trampa de 0 vs false

El bug más común de array_search(): el valor es el primer elemento, su clave es 0 y if ($key) trata 0 como falso. El código dice "no encontrado" para un valor que está justo ahí. Compara con !== false, que solo coincide con un false real.

!= false tiene el mismo bug que if ($key), porque 0 == false es true. Solo el operador estricto los distingue.

Búsqueda estricta

Igual que in_array(), array_search() compara con == salvo que pases true como tercer argumento. El modo flexible permite que una cadena encuentre un número y que null encuentre 0, lo que devuelve una clave que no esperabas.

Encontrar todas las claves con un valor

array_search() se detiene en la primera coincidencia. array_keys($array, $value) devuelve todas las claves que coinciden como un array; añade true para una comparación estricta. Un resultado vacío significa que no hay coincidencias, así que no hay confusión entre 0 y false.

Buscar en un array multidimensional con array_column

array_search() no busca dentro de arrays anidados. En una lista de filas, extrae con array_column() el campo que buscas; las posiciones de esa lista coinciden con los números de fila, así que el resultado es el índice de la fila.

array_column() renumera su salida desde 0, así que esto solo encaja cuando las filas están numeradas 0, 1, 2 sin huecos. Después de unset() o array_filter() la numeración tiene huecos; aplica antes array_values() a las filas o usa la búsqueda por clave de las dos últimas líneas. array_column() explica más sobre la forma con clave de índice.

Búsqueda sin distinguir mayúsculas y minúsculas

array_search() compara las cadenas exactamente. Pasa los dos lados a minúsculas para ignorar las mayúsculas. array_map() conserva las claves, así que la clave que obtienes es la del array original.

Buscar y reemplazar o eliminar

El motivo habitual para buscar es actuar sobre el elemento encontrado. Con la clave en la mano, asigna para cambiarlo o usa unset() para eliminarlo, y protégete siempre antes con !== false: unset($arr[false]) elimina en silencio el elemento con clave 0.

Preguntas frecuentes

¿Qué devuelve array_search si no encuentra el valor?

false. Cuando encuentra el valor devuelve su clave, que puede ser 0 o una cadena vacía, así que comprueba el resultado con !== false, nunca con if ($key) ni con != false.

¿Por qué mi comprobación con array_search falla con el primer elemento?

El primer elemento de un array indexado tiene la clave 0, y 0 es falsy. Por eso if (array_search('a', ['a', 'b'])) toma la rama de no encontrado. Escribe if (array_search('a', $arr) !== false).

¿Cómo encuentro todas las claves de un valor en PHP?

array_search() se detiene en la primera coincidencia. array_keys($array, $value, true) devuelve todas las claves cuyo valor coincide, como array (vacío si no hay ninguna).

¿Cómo busco en un array multidimensional en PHP?

Extrae el campo a una lista plana y busca en ella: $i = array_search('ada@example.com', array_column($users, 'email'));, y luego lee la fila como $users[$i]. Funciona cuando las filas están numeradas 0, 1, 2; si no, recorre con foreach.

Ilustración de los lenguajes de programación de Coddy

Aprende a programar con Coddy

COMENZAR