(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.
array
El array desde el cual comparar
arrays
Arrays 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]);
.