Hàm array_udiff_assoc
Hàm array_udiff_assoc trả về một mảng chứa tất cả các phần tử của mảng đầu tiên, mà không có mặt trong các mảng tiếp theo. Việc so sánh khóa được thực hiện bởi cơ chế tích hợp sẵn của PHP, còn việc so sánh giá trị - thông qua hàm callback do người dùng cung cấp.
Cú pháp
array_udiff_assoc(array $array1, array $array2, ..., callable $value_compare_func): array
Ví dụ
So sánh các mảng với hàm do người dùng định nghĩa:
<?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"));
?>
Kết quả thực thi mã:
Array
(
[b] => brown
[c] => blue
)
Ví dụ
So sánh với chỉ mục số:
<?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"));
?>
Kết quả thực thi mã:
Array
(
[10] => apple
[30] => cherry
)
Ví dụ
So sánh đối tượng phức tạp:
<?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"));
?>
Kết quả thực thi mã:
Array
(
[p1] => Product Object
(
[id] => 1
[name] => Laptop
)
)
Xem thêm
-
hàm
array_diff_assoc,
tính toán sự khác biệt giữa các mảng với việc kiểm tra chỉ mục -
hàm
array_udiff,
tính toán sự khác biệt giữa các mảng với hàm callback (không kiểm tra chỉ mục)