array_diff

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_diffComputa as diferenças entre arrays

Descrição

array_diff(array$array, array...$arrays): array

Compara array com um ou mais arrays e retorna os valores no array que não estão presentes em nenhum dos outros arrays.

Parâmetros

array

O array a ser comparado

arrays

Arrays para comparar

Valor Retornado

Retorna um array contendo todas as entradas de array que não estão presentes em nenhum dos outros arrays. Chaves no array array são preservadas.

Registro de Alterações

VersãoDescrição
8.0.0 Esta função agora pode ser chamada com apenas um parâmetro. Anteriormente, pelo menos dois parâmetros eram necessários.

Exemplos

Exemplo #1 Exemplo da função array_diff()

<?php
$array1
= array("a" => "verde", "vermelho", "azul", "vermelho");
$array2 = array("b" => "verde", "amarelo", "vermelho");
$result = array_diff($array1, $array2);

print_r($result);
?>

Multiplas ocorrências de $array1 são todas tratadas da mesma maneira. Isto irá mostrar:

Array ( [1] => azul )

Exemplo #2 Exemplo de array_diff() com tipos não correspondentes

Dois elementos são considerados iguais se e somente se (string) $elem1 === (string) $elem2. Isto é, quando a representação em string é a mesma.

<?php
// Isto irá gerar uma Notícia de que um array não pode ser convertido em uma string.
$fonte = [1, 2, 3, 4];
$filtro = [3, 4, [5], 6];
$resultado = array_diff($fonte, $filtro);

// Enquanto isto não é um problema, uma vez que o objeto pode ser convertido em string.
class S {
private
$v;

public function
__construct(string $v) {
$this->v = $v;
}

public function
__toString() {
return
$this->v;
}
}

$fonte = [new S('a'), new S('b'), new S('c')];
$filtro = [new S('b'), new S('c'), new S('d')];

$resultado = array_diff($fonte, $filtro);

// $resultado agora contém uma instância de S('a');
?>

Para usar uma função de comparação alternativa, veja array_udiff().

Notas

Nota:

Esta função compara apenas uma dimensão de um array com n dimensões. Mas, obviamente, você pode comparar outras dimensões usando array_diff($array1[0], $array2[0]);.

Veja Também

To Top