(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Computa as diferenças entre arrays
Compara array com um ou mais arrays e
retorna os valores no array que não estão presentes em
nenhum dos outros arrays.
arrayO array a ser comparado
arraysArrays para comparar
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.
| Versão | Descriçã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. |
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 )
Dois elementos são considerados iguais se e somente se
(string) $elem1 === (string) $elem2. Isto é,
quando a representação em string é a mesma.
Exemplo #2 Exemplo de array_diff() com tipos não correspondentes
<?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');
var_dump($result);
?>Para usar uma função de comparação alternativa, veja array_udiff().
Nota:
Esta função verifica somente uma dimensão de um array n-dimensional. É claro que as dimensões mais profundas podem ser verificadas usando
array_diff($array1[0], $array2[0]);.