W3docs

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): bool

Acepta 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

php— editable, runs on the server

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 ArrayObjectno 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 un if.
  • is_array() vs. is_iterable(): si solo necesitas saber si puedes usar foreach con un valor, is_iterable() es más amplio — acepta tanto arrays como objetos Traversable (como los generadores).
  • is_array() vs. is_countable(): usa is_countable() antes de llamar a count() para aceptar también objetos que implementen la interfaz Countable.
  • Para otras comprobaciones de escalares, consulta is_string() e is_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.

Práctica

Práctica
¿Qué hace la función 'is_array' en PHP?
¿Qué hace la función 'is_array' en PHP?
Was this page helpful?