Computa as diferenças entre arrays

# array_diff

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

array_diff — Computa as diferenças entre arrays

### Descrição

function 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ã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

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($resultado);
    ?>

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

### Notas

> 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]);`.

### 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open