Functie array_udiff_assoc
De functie array_udiff_assoc retourneert een array die alle elementen van de eerste array bevat die ontbreken in de volgende arrays. Sleutelvergelijking wordt uitgevoerd door het ingebouwde mechanisme van PHP, en waardevergelijking met behulp van een door de gebruiker gedefinieerde callback-functie.
Syntaxis
array_udiff_assoc(array $array1, array $array2, ..., callable $value_compare_func): array
Voorbeeld
Arrays vergelijken met een aangepaste functie:
<?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"));
?>
Uitvoerresultaat van de code:
Array
(
[b] => brown
[c] => blue
)
Voorbeeld
Vergelijken met numerieke indexen:
<?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"));
?>
Uitvoerresultaat van de code:
Array
(
[10] => apple
[30] => cherry
)
Voorbeeld
Complexe objectvergelijking:
<?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"));
?>
Uitvoerresultaat van de code:
Array
(
[p1] => Product Object
(
[id] => 1
[name] => Laptop
)
)
Zie ook
-
de functie
array_diff_assoc,
die het verschil van arrays berekent met indexcontrole -
de functie
array_udiff,
die het verschil van arrays berekent met een callback-functie (zonder indexcontrole)