is_array()
A função is_array() é uma função integrada do PHP que verifica se uma variável é um array ou não. Um array é um tipo especial de variável que armazena uma
O que é is_array()?
is_array() é uma função integrada do PHP que verifica se uma determinada variável é um array. Ela retorna true se a variável for um array e false para qualquer outro tipo (string, integer, object, null, entre outros).
O PHP é tipado dinamicamente, portanto uma variável pode conter qualquer tipo de valor em tempo de execução. Antes de iterar sobre um valor, indexá-lo ou passá-lo para uma função de array como count() ou array_map(), geralmente vale a pena confirmar que você realmente tem um array. Chamar uma função de array em um não-array pode lançar um TypeError (PHP 8+) ou emitir um aviso, portanto um guarda rápido com is_array() torna seu código mais seguro.
Sintaxe
is_array(mixed $value): boolEla recebe um único parâmetro, $value — a variável a ser testada — e sempre retorna um boolean. Ela nunca gera um erro por conta própria, então é seguro chamá-la com qualquer valor, incluindo resultados de funções que parecem não definidos.
Exemplo básico
Aqui $list é um array, então is_array() retorna true; $text é uma string, então retorna false. Usamos var_dump() em vez de echo porque echo true imprime 1 enquanto echo false imprime uma string vazia — o que dificulta a leitura de booleanos. var_dump() mostra o tipo e o valor explicitamente.
O que conta como um array
Tanto arrays indexados quanto associativos retornam true, assim como um array vazio. Qualquer coisa que apenas pareça uma coleção — como um objeto ou um ArrayObject — não conta como um 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ático: guardar antes de iterar
Um padrão comum é normalizar a entrada que pode chegar como um único valor ou como uma lista, e depois iterar com segurança:
<?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
?>Isso evita um aviso de foreach quando $input é um escalar e mantém o código chamador simples.
is_array() vs. verificações relacionadas
is_array()vs.gettype():gettype()retorna uma string como"array";is_array()retorna um boolean diretamente, o que fica mais legível em umif.is_array()vs.is_iterable(): se você só precisa saber se pode usarforeachcom um valor,is_iterable()é mais abrangente — aceita tanto arrays quanto objetosTraversable(como geradores).is_array()vs.is_countable(): useis_countable()antes de chamarcount()para também aceitar objetos que implementam a interfaceCountable.- Para outras verificações de escalares, veja
is_string()eis_int().
Resumo
Use is_array() sempre que precisar de uma verificação rápida e sem erros de que um valor é um array PHP verdadeiro — principalmente como guarda antes de iterar ou antes de chamar uma função específica de array. Se você precisar permitir objetos iteráveis também, prefira is_iterable() ou is_countable().