(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Calcula la diferencia entre arrays
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.
arrayEl array desde el cual comparar
arraysArrays a comparar contra
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.
| 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. |
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().
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]);.