Como remover um elemento de um array em PHP: do iniciante ao profissional
Imagine: você está programando uma loja online e o comprador remove um produto do carrinho. Ou você está processando logs e precisa descartar registros extras. Ou simplesmente limpando um array de dados "lixo". Mais cedo ou mais tarde, todo desenvolvedor PHP se depara com a tarefa: como remover um elemento de um array?
Parece simples, não é? Mas é aí que a coisa fica interessante. No PHP, não existe uma única função "remova o elemento". Em vez disso, existem várias maneiras, cada uma com suas nuances. E se você escolher a errada, pode acabar com buracos no array (numeração quebrada), perder dados ou simplesmente se confundir.
Neste artigo, vamos explorar todas as principais formas de remover elementos de um array em PHP: desde o simples unset() até o avançado array_filter(). Você aprenderá quando aplicar cada método e nunca mais terá medo dessa tarefa.
1. Remoção rápida por chave: a função unset()
A maneira mais óbvia e popular é a função unset(). Ela destrói uma variável ou elemento de array. Funciona instantaneamente e é intuitiva.
<?php$fruits = ['apple', 'banana', 'cherry', 'date'];unset($fruits[2]); // Remove o elemento no índice 2 ('cherry')print_r($fruits);?>Resultado:
Array( [0] => apple [1] => banana [3] => date)Observação importante: as chaves do array não são reindexadas. O índice 2 desapareceu e agora você tem um "buraco". Para arrays associativos, isso é normal. Mas para listas (arrays numéricos), isso pode ser um problema se você espera uma numeração contínua (0, 1, 2, 3...).
Quando usar unset()?
- Você sabe exatamente a chave do elemento.
- A numeração não é importante (array associativo).
- Precisa remover um ou dois elementos.
2. Remoção por valor: array_search + unset
E se você não sabe a chave, mas sabe o valor? Por exemplo, precisa remover o item "banana" do carrinho. É aí que o array_search() entra em ação.
<?php$cart = ['apple', 'banana', 'cherry', 'banana'];$key = array_search('banana', $cart);if ($key !== false) { unset($cart[$key]);}print_r($cart);?>Resultado:
Array( [0] => apple [2] => cherry [3] => banana)Observe: array_search() encontra a primeira ocorrência. Se houver várias "bananas" no array, apenas a primeira será removida. Para remover todas, será necessário usar um loop ou array_diff() (falaremos sobre ele a seguir).
3. Remoção com reindexação: array_splice()
Se você precisa remover um elemento de um array numérico e deseja que as chaves se tornem contínuas (0, 1, 2...), use array_splice(). Esta é uma função poderosa que pode não apenas remover, mas também inserir elementos.
<?php$numbers = [10, 20, 30, 40, 50];array_splice($numbers, 2, 1); // Remove 1 elemento, começando no índice 2 (o número 30)print_r($numbers);?>Resultado:
Array( [0] => 10 [1] => 20 [2] => 40 [3] => 50)O array "se fechou" — os índices foram recalculados. Perfeito para listas, filas e quaisquer dados sequenciais.
Sintaxe do array_splice()
array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array$array— o array original (passado por referência, será modificado).$offset— a partir de qual índice começar.$length— quantos elementos remover.$replacement— (opcional) elementos para substituir os removidos.