is_array()
La función is_array() en PHP verifica si una variable es un array o no. Es una función integrada muy útil para validar datos antes de iterar.
¿Qué es is_array()?
is_array() es una función integrada de PHP que comprueba si una variable dada es un array. Devuelve true si la variable es un array y false para cualquier otro tipo (string, entero, objeto, null, etc.).
PHP es de tipado dinámico, por lo que una variable puede contener cualquier tipo de valor en tiempo de ejecución. Antes de iterar sobre un valor, acceder a sus índices o pasarlo a una función de array como count() o array_map(), a menudo vale la pena confirmar que realmente se trata de un array. Llamar a una función de array sobre un valor que no es un array puede lanzar un TypeError (PHP 8+) o emitir una advertencia, por lo que una comprobación rápida con is_array() hace que el código sea más seguro.
Sintaxis
is_array(mixed $value): boolAcepta un único parámetro, $value — la variable a comprobar — y siempre devuelve un boolean. Nunca genera un error propio, por lo que es seguro llamarla con cualquier valor, incluidos resultados que parecen no estar definidos provenientes de funciones.
Ejemplo básico
Aquí $list es un array, por lo que is_array() devuelve true; $text es un string, así que devuelve false. Usamos var_dump() en lugar de echo porque echo true imprime 1 mientras que echo false imprime una cadena vacía — lo que hace que los booleanos sean difíciles de leer. var_dump() muestra el tipo y el valor de forma explícita.
Qué se considera un array
Tanto los arrays indexados como los asociativos devuelven true, al igual que un array vacío. Cualquier cosa que simplemente parezca una colección — como un objeto o un ArrayObject — no se considera un array nativo.
<?php
var_dump(is_array([])); // bool(true) — empty array
var_dump(is_array([1, 2, 3])); // bool(true) — indexed
var_dump(is_array(["name" => "Ann"])); // bool(true) — associative
var_dump(is_array([[1, 2], [3, 4]])); // bool(true) — multidimensional
var_dump(is_array("array")); // bool(false) — string
var_dump(is_array(42)); // bool(false) — integer
var_dump(is_array(null)); // bool(false) — null
var_dump(is_array(new stdClass())); // bool(false) — object
?>Uso práctico: proteger antes de iterar
Un patrón común es normalizar una entrada que puede llegar como un único valor o como una lista, y luego iterar de forma segura:
<?php
function printAll(mixed $input): void
{
// Wrap a single value in an array so the loop always works.
if (!is_array($input)) {
$input = [$input];
}
foreach ($input as $item) {
echo $item, "\n";
}
}
printAll("just one"); // just one
printAll(["a", "b", "c"]); // a / b / c on separate lines
?>Esto evita una advertencia de foreach cuando $input es un escalar y mantiene el código llamador simple.
is_array() frente a comprobaciones relacionadas
is_array()vs.gettype():gettype()devuelve un string como"array";is_array()devuelve directamente un boolean, lo que resulta más legible en unif.is_array()vs.is_iterable(): si solo necesitas saber si puedes usarforeachcon un valor,is_iterable()es más amplio — acepta tanto arrays como objetosTraversable(como los generadores).is_array()vs.is_countable(): usais_countable()antes de llamar acount()para aceptar también objetos que implementen la interfazCountable.- Para otras comprobaciones de escalares, consulta
is_string()eis_int().
Resumen
Usa is_array() siempre que necesites una comprobación rápida y sin errores de que un valor es un array nativo de PHP — con mayor frecuencia como protección antes de iterar o antes de llamar a una función específica de array. Si necesitas permitir también objetos iterables, usa is_iterable() o is_countable() en su lugar.