(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
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 )
Dos elementos son considerados iguales si y solo si
(string) $elem1 === (string) $elem2
; es decir, cuando
la representación de string
es la misma.
Ejemplo #2 Ejemplo con la función array_diff() con tipos que no coinciden
<?php
// Esto generará una advertencia ya que un array no puede ser convertido a 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 a 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 ahora contiene una instancia de S('a');
var_dump($result);
?>
Para utilizar una función de comparación alternativa, consulte 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]);
.