Como Remover um Elemento de um Array em PHP?

Publicado 27 de agosto de 2024

Usando a Função unset() para Remover Elementos de um Array

Removendo um Único Elemento com unset()

A função unset() em PHP exclui um elemento de um array pela sua chave. Para remover um único elemento, passe o array e a chave do elemento que você deseja remover como argumentos para a função unset().

Aqui está um exemplo que mostra como remover um único elemento de um array usando unset():

$frutas = array("maçã", "banana", "laranja", "uva");
unset($frutas[2]);
print_r($frutas);

Neste exemplo, temos um array chamado $frutas com quatro elementos. Usamos a função unset() para remover o terceiro elemento (índice 2) do array, que é "laranja". Após remover o elemento, usamos print_r() para exibir o array atualizado, que mostrará:

Array
(
    [0] => maçã
    [1] => banana
    [3] => uva
)

Ao usar unset() para remover um elemento, os índices do array não são reindexados. Após remover um elemento, o array pode ter lacunas em seus índices.

Removendo Vários Elementos com unset()

A função unset() também permite remover vários elementos de um array especificando várias chaves. Passe várias chaves como argumentos separados para a função unset() para excluir vários elementos em uma única declaração.

Aqui está um exemplo que demonstra como remover vários elementos de um array usando unset():

$numeros = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
unset($numeros[3], $numeros[6], $numeros[8]);
print_r($numeros);

Neste exemplo, temos um array $numeros com dez elementos. Usamos a função unset() para remover o quarto elemento (índice 3), o sétimo elemento (índice 6) e o nono elemento (índice 8) do array. Após remover os elementos, o array atualizado será:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [4] => 5
    [5] => 6
    [7] => 8
    [9] => 10
)

A função unset() remove os elementos especificados do array, mantendo os elementos restantes intactos. Os índices do array não são reindexados automaticamente.

Função Descrição
unset() Remove um elemento de um array pela sua chave
unset($array[chave]) Remove um único elemento de um array
unset($array[chave1], $array[chave2], ...) Remove vários elementos de um array

Removendo Elementos de um Array Usando array_splice()

Excluindo Elementos com array_splice()

A função array_splice() em PHP permite remover elementos de um array especificando o índice inicial e o número de elementos a serem removidos. Esta função modifica o array original e retorna os elementos removidos como um novo array.

Aqui está um exemplo que mostra como usar array_splice() para remover elementos de um array:

$frutas = array("maçã", "banana", "laranja", "uva", "kiwi");
$frutas_removidas = array_splice($frutas, 2, 2);
print_r($frutas);
print_r($frutas_removidas);

Neste exemplo, temos um array $frutas com cinco elementos. Usamos array_splice() para remover dois elementos começando do índice 2 (o terceiro elemento). O primeiro parâmetro especifica o array, o segundo parâmetro é o índice inicial e o terceiro parâmetro é o número de elementos a serem removidos.

Após usar array_splice(), o array $frutas conterá os elementos restantes:

Array
(
    [0] => maçã
    [1] => banana
    [2] => kiwi
)

Os elementos removidos são retornados como um novo array, que é armazenado na variável $frutas_removidas:

Array
(
    [0] => laranja
    [1] => uva
)

Reindexando o Array Após Usar array_splice()

É importante observar que array_splice() reindexar automaticamente o array após remover elementos. Os elementos restantes são deslocados para preencher as lacunas criadas pelos elementos removidos, e os índices do array são atualizados.

Aqui está um exemplo que mostra o comportamento de reindexação de array_splice():

$numeros = array(5, 10, 15, 20, 25);
array_splice($numeros, 1, 3);
print_r($numeros);

Neste exemplo, removemos três elementos começando do índice 1 (o segundo elemento) do array $numeros usando array_splice(). Após remover os elementos, o array é reindexado:

Array
(
    [0] => 5
    [1] => 25
)

Os elementos restantes são deslocados para preencher as lacunas, e os índices do array são atualizados.

Exemplo

  1. Gerenciando uma lista de tarefas: Suponha que você tenha um array representando uma lista de tarefas e queira remover as tarefas concluídas da lista. Você pode usar array_splice() para remover as tarefas concluídas especificando seus índices.

    $lista_tarefas = array("Comprar mantimentos", "Terminar projeto", "Ligar para cliente", "Participar de reunião");
    $tarefas_concluidas = array(1, 3);
    foreach ($tarefas_concluidas as $indice) {
       array_splice($lista_tarefas, $indice, 1);
    }
    print_r($lista_tarefas);

    Saída:

    Array
    (
       [0] => Comprar mantimentos
       [1] => Ligar para cliente
    )
  2. Removendo elementos duplicados: Se você tem um array com elementos duplicados e deseja remover as duplicatas, pode usar array_splice() com array_unique() para fazer isso.

    $numeros = array(1, 2, 3, 2, 4, 3, 5);
    $numeros_unicos = array_unique($numeros);
    $indices_duplicados = array_diff_key($numeros, $numeros_unicos);
    foreach ($indices_duplicados as $indice => $valor) {
       array_splice($numeros, $indice, 1);
    }
    print_r($numeros);

    Saída:

    Array
    (
       [0] => 1
       [1] => 2
       [2] => 3
       [4] => 4
       [6] => 5
    )
Função Descrição
array_splice() Remove elementos de um array e os retorna como um novo array
array_splice($array, $inicio, $comprimento) Remove $comprimento elementos de $array começando no índice $inicio
$elementos_removidos = array_splice($array, $inicio, $comprimento) Atribui os elementos removidos a $elementos_removidos

Removendo Elementos de um Array Associativo

Excluindo Elementos de um Array Associativo com unset()

Em PHP, você pode remover elementos de um array associativo usando a função unset() especificando a chave do elemento que deseja excluir. A função unset() remove o par chave-valor do array.

Aqui está um exemplo que mostra como remover um elemento de um array associativo usando unset():

$pessoa = array(
    "nome" => "João",
    "idade" => 30,
    "cidade" => "São Paulo",
    "país" => "Brasil"
);

unset($pessoa["cidade"]);

print_r($pessoa);

Neste exemplo, temos um array associativo chamado $pessoa que representa as informações de uma pessoa. Cada par chave-valor no array corresponde a um atributo específico da pessoa.

Para remover o elemento "cidade" do array $pessoa, usamos a função unset() e passamos a variável do array seguida pela chave entre colchetes: unset($pessoa["cidade"]). Isso remove o par chave-valor onde a chave é "cidade".

Após remover o elemento, a função print_r() é usada para mostrar o array $pessoa atualizado:

Array
(
    [nome] => João
    [idade] => 30
    [país] => Brasil
)

Como você pode ver, o elemento "cidade" foi removido do array, e os pares chave-valor restantes foram mantidos.

É importante notar que quando você remove um elemento de um array associativo usando unset(), a estrutura do array permanece a mesma. As chaves dos elementos restantes não são alteradas, e nenhuma reindexação ocorre.

Você pode remover vários elementos de um array associativo especificando múltiplas chaves em declarações unset() separadas:

unset($pessoa["idade"], $pessoa["país"]);

Esta declaração remove tanto o elemento "idade" quanto o elemento "país" do array $pessoa.

Usar unset() é uma maneira fácil de remover elementos de um array associativo quando você conhece as chaves específicas que deseja excluir.

Função Descrição
unset() Remove um elemento de um array associativo pela sua chave
unset($array[chave]) Remove o par chave-valor de $array onde a chave é especificada

Exemplo: Removendo um Produto de um Carrinho de Compras

Suponha que você tenha um carrinho de compras online implementado como um array associativo, onde cada chave representa um ID de produto e o valor correspondente representa a quantidade daquele produto no carrinho. Se um usuário decidir remover um produto do seu carrinho, você pode usar unset() para remover o par chave-valor correspondente.

$carrinhoDeCompras = array(
    "item1" => 2,
    "item2" => 1,
    "item3" => 3
);

unset($carrinhoDeCompras["item2"]);

print_r($carrinhoDeCompras);

Saída:

Array
(
    [item1] => 2
    [item3] => 3
)

Neste exemplo, o produto "item2" é removido do array $carrinhoDeCompras usando unset().

Exemplo: Removendo um Usuário de um Banco de Dados de Usuários

Considere um caso em que você tem um banco de dados de usuários armazenado como um array associativo, com IDs de usuário como chaves e informações de usuário como valores. Se você precisar remover um usuário do banco de dados, pode usar unset() para excluir o par chave-valor correspondente.

$bancoDeDadosUsuarios = array(
    "usuario1" => array("nome" => "João", "email" => "joao@exemplo.com"),
    "usuario2" => array("nome" => "Maria", "email" => "maria@exemplo.com"),
    "usuario3" => array("nome" => "Carlos", "email" => "carlos@exemplo.com")
);

unset($bancoDeDadosUsuarios["usuario2"]);

print_r($bancoDeDadosUsuarios);

Saída:

Array
(
    [usuario1] => Array
        (
            [nome] => João
            [email] => joao@exemplo.com
        )

    [usuario3] => Array
        (
            [nome] => Carlos
            [email] => carlos@exemplo.com
        )
)

Neste exemplo, o usuário com o ID "usuario2" é removido do array $bancoDeDadosUsuarios usando unset().

Usando array_diff() para Remover Elementos de um Array

Criando um Novo Array sem Elementos Específicos

A função array_diff() do PHP cria um novo array que contém todos os elementos do primeiro array que não estão presentes em nenhum dos outros arrays passados como parâmetros. Esta função pode remover elementos de um array criando um novo array sem os elementos especificados.

Aqui está um exemplo que mostra como usar array_diff() para remover elementos de um array:

$array_original = array("maçã", "banana", "laranja", "uva", "kiwi");
$elementos_para_remover = array("banana", "uva");
$novo_array = array_diff($array_original, $elementos_para_remover);
print_r($novo_array);

Neste exemplo, temos um array chamado $array_original que contém cinco elementos. Também temos outro array $elementos_para_remover que especifica os elementos que queremos remover do $array_original.

Usamos a função array_diff() para criar um novo array $novo_array que contém todos os elementos de $array_original que não estão presentes em $elementos_para_remover. O primeiro parâmetro de array_diff() é o array original, e o segundo parâmetro é o array de elementos a serem removidos.

Após executar este código, o $novo_array conterá os seguintes elementos:

Array
(
    [0] => maçã
    [2] => laranja
    [4] => kiwi
)

A função array_diff() removeu os elementos "banana" e "uva" do $array_original e retornou um novo array com os elementos restantes.

É importante notar que array_diff() compara os valores dos arrays, não as chaves. O array resultante terá novas chaves numéricas começando de zero, mesmo se o array original tivesse chaves de string ou não sequenciais.

Você também pode usar array_diff() com vários arrays para remover elementos presentes em qualquer um dos outros arrays:

$array1 = array("a" => "maçã", "b" => "banana", "c" => "cereja");
$array2 = array("a" => "maçã", "b" => "mirtilo", "d" => "tâmara");
$array3 = array("a" => "damasco", "b" => "banana", "e" => "sabugueiro");
$resultado = array_diff($array1, $array2, $array3);
print_r($resultado);

Neste exemplo, array_diff() compara $array1 com $array2 e $array3 e retorna um novo array contendo os elementos de $array1 que não estão presentes nem em $array2 nem em $array3:

Array
(
    [c] => cereja
)

A função array_diff() pode ser muito útil quando você precisa filtrar um array com base em valores específicos sem alterar o array original. Ela oferece a flexibilidade de gerar um novo array apenas com os elementos desejados.

Função Descrição
array_diff() Cria um novo array que contém elementos do primeiro array que não estão presentes em nenhum dos outros arrays
$resultado = array_diff($array1, $array2, ...) Atribui o array resultante a $resultado

Exemplo: Filtrando uma Lista de Endereços de E-mail

Suponha que você tenha uma lista de endereços de e-mail e queira remover endereços de e-mail específicos da lista. Você pode usar array_diff() para criar um novo array sem os endereços de e-mail especificados.

$lista_emails = array("joao@exemplo.com", "maria@exemplo.com", "carlos@exemplo.com", "ana@exemplo.com");
$emails_bloqueados = array("maria@exemplo.com", "carlos@exemplo.com");
$emails_filtrados = array_diff($lista_emails, $emails_bloqueados);
print_r($emails_filtrados);

Saída:

Array
(
    [0] => joao@exemplo.com
    [3] => ana@exemplo.com
)

Neste exemplo, array_diff() é usado para filtrar o array $lista_emails removendo os endereços de e-mail especificados no array $emails_bloqueados. O array resultante $emails_filtrados contém apenas os endereços de e-mail que não estão bloqueados.

Exemplo: Comparando Dois Arrays e Encontrando as Diferenças

Se você tem dois arrays e deseja encontrar os elementos que estão presentes no primeiro array, mas não no segundo array, você pode usar array_diff().

$array1 = array("maçã", "banana", "laranja", "uva");
$array2 = array("banana", "kiwi", "pêra");
$diferenca = array_diff($array1, $array2);
print_r($diferenca);

Saída:

Array
(
    [0] => maçã
    [2] => laranja
    [3] => uva
)

Aqui, array_diff() compara $array1 com $array2 e retorna um novo array $diferenca que contém os elementos de $array1 que não estão presentes em $array2. Isso é útil quando você deseja encontrar os elementos únicos em um array em comparação com outro.

Removendo o Primeiro ou Último Elemento de um Array em PHP

Removendo o Último Elemento com array_pop()

A função array_pop() em PHP remove o último elemento de um array e retorna o valor do elemento removido. Esta função modifica o array original removendo o último elemento e encurtando o array em um elemento.

Aqui está um exemplo que mostra como remover o último elemento de um array usando array_pop():

$frutas = array("maçã", "banana", "laranja", "uva");
$fruta_removida = array_pop($frutas);
echo "Fruta removida: " . $fruta_removida . "\n";
print_r($frutas);

Neste exemplo, temos um array $frutas com quatro elementos. Usamos a função array_pop() para remover o último elemento do array. O elemento removido é armazenado na variável $fruta_removida.

Após executar este código, a saída será:

Fruta removida: uva
Array
(
    [0] => maçã
    [1] => banana
    [2] => laranja
)

A função array_pop() removeu o último elemento "uva" do array $frutas e retornou seu valor. O array $frutas é então impresso usando print_r(), mostrando que agora contém apenas três elementos.

É importante notar que array_pop() retorna o valor do elemento removido, que você pode armazenar em uma variável ou usar diretamente. Se o array estiver vazio, array_pop() retorna null.

Exemplo: Rastreando Ações Recentes do Usuário

Digamos que você queira manter um registro das ações mais recentes realizadas por um usuário, com um limite no número de ações a serem armazenadas. Você pode usar array_pop() para remover a ação mais antiga quando o limite for excedido.

$acoesRecentes = array();
$maxAcoes = 5;

function adicionarAcaoRecente($acao) {
    global $acoesRecentes, $maxAcoes;

    if (count($acoesRecentes) >= $maxAcoes) {
        array_pop($acoesRecentes);
    }

    array_unshift($acoesRecentes, $acao);
}

adicionarAcaoRecente("Fez login");
adicionarAcaoRecente("Visualizou perfil");
adicionarAcaoRecente("Atualizou configurações");
adicionarAcaoRecente("Enviou formulário");
adicionarAcaoRecente("Fez logout");
adicionarAcaoRecente("Fez login");

print_r($acoesRecentes);

Saída:

Array
(
    [0] => Fez login
    [1] => Fez logout
    [2] => Enviou formulário
    [3] => Atualizou configurações
    [4] => Visualizou perfil
)

Neste exemplo, a função adicionarAcaoRecente() é usada para adicionar novas ações ao array $acoesRecentes. Se o número de ações exceder o limite $maxAcoes, array_pop() é usado para remover a ação mais antiga do final do array. Dessa forma, apenas as ações mais recentes são mantidas, e as mais antigas são descartadas.

Removendo o Primeiro Elemento com array_shift()

Semelhante a array_pop(), a função array_shift() remove o primeiro elemento de um array e retorna o valor do elemento removido. Esta função também modifica o array original removendo o primeiro elemento e deslocando todos os elementos restantes para preencher a lacuna.

Aqui está um exemplo que demonstra como remover o primeiro elemento de um array usando array_shift():

$numeros = array(10, 20, 30, 40, 50);
$numero_removido = array_shift($numeros);
echo "Número removido: " . $numero_removido . "\n";
print_r($numeros);

Neste exemplo, temos um array $numeros com cinco elementos. Usamos a função array_shift() para remover o primeiro elemento do array. O elemento removido é armazenado na variável $numero_removido.

Após executar este código, a saída será:

Número removido: 10
Array
(
    [0] => 20
    [1] => 30
    [2] => 40
    [3] => 50
)

A função array_shift() removeu o primeiro elemento "10" do array $numeros e retornou seu valor. O array $numeros é então impresso usando print_r(), mostrando que agora contém os quatro elementos restantes, com seus índices deslocados adequadamente.Assim como array_pop(), array_shift() retorna o valor do elemento removido. Se o array estiver vazio, array_shift() retorna null.

Exemplo: Processando uma Fila

Suponha que você tenha uma fila de tarefas representada como um array e queira processar as tarefas na ordem em que foram adicionadas. Você pode usar array_shift() para remover e recuperar a primeira tarefa da fila.

$filaTarefas = array("Tarefa 1", "Tarefa 2", "Tarefa 3", "Tarefa 4");

while (!empty($filaTarefas)) {
    $tarefaAtual = array_shift($filaTarefas);
    echo "Processando tarefa: " . $tarefaAtual . "\n";
    // Realizar o processamento da tarefa aqui
}

Saída:

Processando tarefa: Tarefa 1
Processando tarefa: Tarefa 2
Processando tarefa: Tarefa 3
Processando tarefa: Tarefa 4

Neste exemplo, array_shift() é usado para remover e recuperar a primeira tarefa do array $filaTarefas em cada iteração do loop. Isso permite processar as tarefas na ordem em que foram adicionadas à fila.

Função Descrição
array_pop() Remove o último elemento de um array e retorna seu valor
array_shift() Remove o primeiro elemento de um array, desloca os elementos restantes e retorna o valor do elemento removido