Función array_udiff_assoc
La función array_udiff_assoc devuelve un array que contiene todos los elementos del primer array que no están presentes en los arrays siguientes. La comparación de claves se realiza mediante el mecanismo interno de PHP, y la de valores mediante una función callback definida por el usuario.
Sintaxis
array_udiff_assoc(array $array1, array $array2, ..., callable $value_compare_func): array
Ejemplo
Comparación de arrays con función personalizada:
<?php
function compare($a, $b) {
return $a <=> $b;
}
$array1 = ["a" => "green", "b" => "brown", "c" => "blue"];
$array2 = ["a" => "green", "b" => "yellow", "d" => "blue"];
print_r(array_udiff_assoc($array1, $array2, "compare"));
?>
Resultado de la ejecución del código:
Array
(
[b] => brown
[c] => blue
)
Ejemplo
Comparación con índices numéricos:
<?php
function numCompare($a, $b) {
return $a - $b;
}
$array1 = [10 => "apple", 20 => "banana", 30 => "cherry"];
$array2 = [10 => "pear", 20 => "banana", 40 => "cherry"];
print_r(array_udiff_assoc($array1, $array2, "strcmp"));
?>
Resultado de la ejecución del código:
Array
(
[10] => apple
[30] => cherry
)
Ejemplo
Comparación compleja de objetos:
<?php
class Product {
public $id;
public $name;
public function __construct($id, $name) {
$this->id = $id;
$this->name = $name;
}
}
function objCompare($a, $b) {
return strcmp($a->name, $b->name);
}
$products1 = [
"p1" => new Product(1, "Laptop"),
"p2" => new Product(2, "Phone")
];
$products2 = [
"p1" => new Product(3, "Tablet"),
"p3" => new Product(2, "Phone")
];
print_r(array_udiff_assoc($products1, $products2, "objCompare"));
?>
Resultado de la ejecución del código:
Array
(
[p1] => Product Object
(
[id] => 1
[name] => Laptop
)
)
Véase también
-
la función
array_diff_assoc,
que calcula la diferencia de arrays con comprobación de índices -
la función
array_udiff,
que calcula la diferencia de arrays con función callback (sin comprobación de índices)