array_udiff_assoc funksiyasi
array_udiff_assoc funksiyasi birinchi massivda mavjud bo'lgan, lekin keyingi massivlarda yo'q bo'lgan barcha elementlarni o'z ichiga olgan massivni qaytaradi. Kalitlarni solishtirish PHP ning o'rnatilgan mexanizmi orqali, qiymatlarni esa foydalanuvchi tomonidan belgilangan callback-funksiya orqali amalga oshiriladi.
Sintaksis
array_udiff_assoc(array $array1, array $array2, ..., callable $value_compare_func): array
Misol
Foydalanuvchi funksiyasi bilan massivlarni solishtirish:
<?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"));
?>
Kodni bajarish natijasi:
Array
(
[b] => brown
[c] => blue
)
Misol
Raqamli indekslar bilan solishtirish:
<?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"));
?>
Kodni bajarish natijasi:
Array
(
[10] => apple
[30] => cherry
)
Misol
Murakkab ob'ektlarni solishtirish:
<?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"));
?>
Kodni bajarish natijasi:
Array
(
[p1] => Product Object
(
[id] => 1
[name] => Laptop
)
)
Shuningdek qarang
-
array_diff_assocfunksiyasi,
bu indekslarni tekshirish bilan massivlar farqini hisoblaydi -
array_udifffunksiyasi,
bu callback-funksiya bilan massivlar farqini hisoblaydi (indekslarni tekshirmasdan)