W3docs

A Função array_diff do PHP

A função array_diff no PHP compara arrays e retorna os valores presentes em um array mas não em outro.

A função array_diff no PHP é uma função nativa que compara arrays e retorna os valores presentes no primeiro array, mas não em nenhum dos outros. Ela é útil sempre que você precisar da diferença entre listas — por exemplo, comparar dados de um banco de dados com valores enviados por um formulário, ou descobrir quais itens foram removidos entre dois instantâneos de uma lista.

Este capítulo aborda como o array_diff funciona, sua sintaxe, como ele lida com chaves e comparação de valores, e armadilhas comuns. Faz parte do tópico arrays em PHP.

Como o array_diff Funciona

A função array_diff compara dois ou mais arrays e retorna um novo array contendo os valores presentes no primeiro array, mas em nenhum dos arrays subsequentes. Dois pontos são essenciais para entender:

  • A comparação é baseada em valores; as chaves são ignoradas. Apenas os valores são comparados, mas as chaves do primeiro array são preservadas no resultado (elas não são reindexadas).
  • Os valores são comparados como strings. Internamente, o PHP trata dois elementos como iguais quando (string) $a === (string) $b. Portanto, o inteiro 1 e a string "1" são considerados o mesmo valor.

Sintaxe

A sintaxe da função array_diff é a seguinte:

Sintaxe da função array_diff do PHP

array array_diff (array $array1, array $array2 [, array $... ]);

O parâmetro array1 é o primeiro array — aquele cujos valores você deseja manter. O parâmetro array2 (e quaisquer arrays adicionais) são os arrays com os quais comparar. A função retorna os valores de array1 que não são encontrados em nenhum dos outros arrays.

Exemplos

Veja alguns exemplos de como usar a função array_diff no seu código PHP.

Exemplo PHP de uso da função array_diff

php— editable, runs on the server

Este código produzirá a seguinte saída:

Array ( [0] => 1 )

Como você pode ver, a função array_diff retornou o valor 1, que está presente em $array1 mas não em $array2. Observe que a chave original (0) do primeiro array é preservada.

Exemplo PHP com valores string (sensibilidade a maiúsculas e minúsculas)

php— editable, runs on the server

Este código produzirá a seguinte saída:

Array ( [1] => Banana )

Neste exemplo, a comparação de strings diferencia maiúsculas de minúsculas. Como 'Banana' não corresponde exatamente a 'banana', ela é retornada como diferença. A chave 1 (posição original de Banana) é mantida no resultado.

Comparando com múltiplos arrays

Você pode passar mais de dois arrays. Um valor é mantido apenas se estiver ausente de todos os outros arrays:

<?php

$array1 = [1, 2, 3, 4, 5];
$array2 = [2, 4];
$array3 = [5];

$result = array_diff($array1, $array2, $array3);
print_r($result);

?>

Saída:

Array ( [0] => 1 [2] => 3 )

Os valores 2 e 4 são removidos por $array2, e 5 é removido por $array3, restando 1 e 3 com suas chaves originais.

Reindexando o resultado

Como as chaves originais são preservadas, o resultado pode ter lacunas nas chaves numéricas. Se você precisar de uma lista com índices sequenciais limpos, envolva a chamada em array_values():

<?php

$result = array_values(array_diff([1, 2, 3], [2]));
print_r($result);

?>

Saída:

Array ( [0] => 1 [1] => 3 )

Armadilha: comparação solta baseada em string

Como os elementos são comparados como strings, tipos mistos podem corresponder de forma inesperada:

<?php

$result = array_diff(['1', '2', 3], [1, 2]);
print_r($result);

?>

Saída:

Array ( [2] => 3 )

Aqui '1' corresponde a 1 e '2' corresponde a 2 (comparação de string), então apenas 3 permanece. Objetos e arrays como valores geram um aviso, pois não podem ser convertidos para string de forma limpa.

Funções relacionadas

array_diff compara apenas valores. O PHP oferece variantes para diferentes necessidades:

Conclusão

A função array_diff é uma ferramenta útil para comparar arrays e encontrar as diferenças entre eles. Seja trabalhando com dados de um banco de dados ou simplesmente comparando listas de valores, a função array_diff pode ajudá-lo a encontrar de forma rápida e fácil os valores exclusivos de um array. Ao usar essa função no seu código PHP, você pode agilizar seu processo de desenvolvimento e facilitar a localização e o processamento dos dados necessários.

Prática

Prática
O que a função array_diff() no PHP faz?
O que a função array_diff() no PHP faz?
Was this page helpful?