PHP array_intersect_uassoc()

Hàm `array_intersect_uassoc()` trong PHP

Hàm `array_intersect_uassoc()` trong PHP được sử dụng để so sánh các mảng và tìm ra các phần tử có khoá giống nhau và giá trị giống nhau theo một hàm so sánh người dùng định nghĩa. Nó sẽ trả về một mảng chứa các phần tử được tìm thấy trong cả hai mảng đầu vào mà có cùng khoá và giá trị.

Cú pháp

array intersect_uassoc(array $array1, array $array2, callable $value_compare_func) : array

Tham số

  • array1: Mảng đầu tiên để so sánh.
  • array2: Mảng thứ hai để so sánh.
  • value_compare_func: Hàm gọi lại (callback) dùng để so sánh các giá trị của mảng. Hàm này nên nhận ba tham số: phần tử từ mảng đầu tiên, phần tử tương ứng từ mảng thứ hai và nên trả về một giá trị số nguyên cho biết quan hệ giữa chúng.

Giá trị trả về

Hàm trả về một mảng chứa các phần tử giống nhau về khoá và giá trị sau khi đã áp dụng hàm so sánh. Nếu không có phần tử nào thoả mãn điều kiện, nó sẽ trả về một mảng rỗng.

Ví dụ

$array1 = [
    "a" => "green",
    "b" => "brown",
    "c" => "blue"
];

$array2 = [
    "a" => "green",
    "b" => "yellow",
    "c" => "blue"
];

$result = array_intersect_uassoc($array1, $array2, function($val1, $val2) {
    return strcmp($val1, $val2);
});

print_r($result);

Kết quả sẽ là:

Array
(
    [a] => green
    [c] => blue
)

Lưu ý

- Hàm `array_intersect_uassoc()` chỉ so sánh giá trị và khoá của các phần tử. Khoá trong mảng kết quả sẽ là khoá từ mảng đầu tiên.

- Hàm so sánh giá trị phải trả về 0 nếu hai giá trị bằng nhau, một số âm nếu giá trị đầu tiên nhỏ hơn và một số dương nếu giá trị đầu tiên lớn hơn.

Bạn có thể sử dụng hàm này trong nhiều trường hợp khi cần so sánh các mảng với những điều kiện phức tạp hơn là chỉ đơn giản là so sánh bằng nhau.