Como verificar se um array está vazio em PHP? Guia completo com exemplos
\n\nOlá, colega desenvolvedor! Se você já escreveu código em PHP, certamente já se deparou com a situação de precisar saber: há algo no array, ou ele está vazio como o bolso de um estudante depois da formatura? Essa tarefa parece trivial, mas esconde algumas armadilhas. Especialmente para iniciantes, que podem acidentalmente "derrubar" o script devido a uma verificação incorreta.
\n\nHoje vamos analisar todas as formas populares de verificar se um array está vazio em PHP, desde as mais simples até as profissionais. Você aprenderá como empty() difere de isset(), por que count() pode ser perigoso e como escrever um código ideal. Vamos lá!
Por que isso é importante? Erros típicos de iniciantes
\n\nImagine: você recebe dados do usuário (por exemplo, uma lista de produtos no carrinho). Se o array estiver vazio — é preciso mostrar a mensagem "Carrinho vazio". Se não estiver vazio — exibir os produtos. Parece uma lógica simples. Mas é isso que iniciantes costumam escrever:
\n\n// Erro nº1: comparação com false\nif ($cart == false) {\n echo "Carrinho vazio";\n}\n\n// Erro nº2: conversão implícita de tipos\nif ($cart) {\n // Este código será executado se o array não estiver vazio\n}\n\nParece que funciona? Sim, mas apenas em casos simples. E se o array tiver chaves, mas todos os valores forem null ou strings vazias? Ou se a variável nem estiver definida? É aí que começam os bugs. Para evitá-los, vamos analisar a verificação de array vazio em PHP de verdade.
Método nº1: Função empty() — a mais popular
\n\nÉ a primeira coisa que vem à mente. A função empty() em PHP retorna true se a variável estiver vazia. Para um array, isso significa: o array não existe, é igual a null ou não contém elementos.
<?php\n$emptyArray = [];\n$nonEmptyArray = ['apple', 'banana'];\n\nvar_dump(empty($emptyArray)); // true\nvar_dump(empty($nonEmptyArray)); // false\n?>\n\nVantagens: curto, legível, funciona para variáveis não definidas (não gera warning).
\n\nDesvantagens: empty() também considera vazios 0, '0', '', false, null e o objeto vazio SimpleXMLElement. Se o seu array contém, por exemplo, um elemento com valor 0 — empty() dirá que ele está vazio. E isso nem sempre é o que você precisa.
<?php\n$trickyArray = [0];\nvar_dump(empty($trickyArray)); // true! Mas o elemento existe\n?>\n\nConclusão: use empty() apenas quando tiver certeza de que o array não conterá valores "falsos" (0, string vazia, etc.). Para a maioria das tarefas com formulários e entrada do usuário, é uma ótima opção.
Método nº2: Função count() — contagem precisa
\n\nO segundo método mais popular é verificar se o array está vazio usando count(). Esta função retorna o número de elementos no array.
\n\n<?php\n$array1 = [];\n$array2 = ['a' => 1, 'b' => 2];\n\nif (count($array1) === 0) {\n echo "Array vazio";\n}\n\nif (count($array2) > 0) {\n echo "Array não vazio, contém " . count($array2) . " elementos";\n}\n?>\n\nVantagens: resultado absolutamente preciso. Se count() retornou 0 — não há elementos no array. Sem surpresas com valores falsos.
\n\nDesvantagens: para arrays muito grandes, count() pode ser mais lento que empty() (embora a diferença geralmente seja insignificante). Também é preciso ter cuidado: se a variável não estiver definida, count() gerará um warning. Use a verificação isset() ou @count() (mas suprimir erros é uma má prática).
Melhor prática: combine com isset():
<?php\nif (isset($array) && count($array)