array_diff
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Computa as diferenças entre arrays
Descrição
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ã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. |
Exemplos
Example #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 )
Example #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
Note:
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]);
.
Veja Também
- array_diff_assoc() - Computa a diferença entre arrays com checagem adicional de índice
- array_udiff() - Computa a diferença de arrays usando uma função de callback para comparação dos dados
- array_intersect() - Calcula a interseção entre arrays
- array_intersect_assoc() - Computa a interseção de arrays com uma adicional verificação de índice