Fonction array_udiff_assoc
La fonction array_udiff_assoc retourne un tableau contenant tous les éléments du premier tableau qui sont absents des tableaux suivants. La comparaison des clés est effectuée par le mécanisme intégré de PHP, et celle des valeurs - via une fonction de rappel utilisateur.
Syntaxe
array_udiff_assoc(array $array1, array $array2, ..., callable $value_compare_func): array
Exemple
Comparaison de tableaux avec une fonction personnalisée :
<?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"));
?>
Résultat de l'exécution du code :
Array
(
[b] => brown
[c] => blue
)
Exemple
Comparaison avec des index numériques :
<?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"));
?>
Résultat de l'exécution du code :
Array
(
[10] => apple
[30] => cherry
)
Exemple
Comparaison complexe d'objets :
<?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"));
?>
Résultat de l'exécution du code :
Array
(
[p1] => Product Object
(
[id] => 1
[name] => Laptop
)
)
Voir aussi
-
la fonction
array_diff_assoc,
qui calcule la différence des tableaux avec vérification des index -
la fonction
array_udiff,
qui calcule la différence des tableaux avec une fonction de rappel (sans vérification des index)