array_diff

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

array_diffCalcula la diferencia entre arrays

Descripción

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

array_diff() compara el array array con uno o más arrays y devuelve los valores del array array que no están presentes en los otros arrays.

Parámetros

array

El array desde el cual comparar

arrays

Arrays a comparar contra

Valores devueltos

Devuelve un array que contiene todas las entidades del array array que no están presentes en ninguno de los otros arrays. Las claves del array array son preservadas.

Historial de cambios

Versión Descripción
8.0.0 Esta función ahora puede ser llamada con un solo parámetro. Anteriormente, se requerían al menos dos parámetros.

Ejemplos

Ejemplo #1 Ejemplo con array_diff()

<?php
$array1
= array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);
?>

Los valores múltiples en array1 serán todos tratados de la misma forma. Esto mostrará:

Array
(
    [1] => blue
)

Ejemplo #2 Ejemplo con la función array_diff() con tipos que no coinciden

Dos elementos son considerados iguales si y solo si (string) $elem1 === (string) $elem2 ; en suma, cuando la representación del string es la misma.

<?php
// Esto generará una advertencia ya que un array no puede ser convertido en string.
$source = [1, 2, 3, 4];
$filter = [3, 4, [5], 6];
$result = array_diff($source, $filter);

// Mientras que esto es correcto, ya que los objetos pueden ser convertidos en string.
class S {
private
$v;

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

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

$source = [new S('a'), new S('b'), new S('c')];
$filter = [new S('b'), new S('c'), new S('d')];

$result = array_diff($source, $filter);

// $result contiene ahora una instancia de S('a');
?>

Para utilizar una función de comparación alternativa, refiérase a la función array_udiff().

Notas

Nota:

Tenga en cuenta que esta función solo verifica una dimensión de un array multidimensional. Por supuesto, se pueden verificar dimensiones más profundas utilizando array_diff($array1[0], $array2[0]);.

Ver también