PHP array_diff_uassoc()

Hàm array_diff_uassoc() trong PHP

Hàm array_diff_uassoc() được sử dụng để tính toán sự khác biệt giữa các mảng, so sánh cả giá trị và khóa của các phần tử. Điểm đặc biệt của hàm này là nó cho phép bạn sử dụng một hàm callback để so sánh khóa của các phần tử trong mảng.

Cú pháp

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

Tham số

  • array1: Mảng chính mà bạn muốn so sánh.
  • array2: Mảng thứ hai mà bạn muốn so sánh với mảng chính.
  • value_compare_func: Một hàm callback dùng để so sánh các giá trị của các phần tử trong mảng. Hàm này nhận vào hai tham số (giá trị từ mảng đầu tiên và giá trị từ mảng thứ hai) và trả về 0 nếu chúng giống nhau, một giá trị âm nếu giá trị đầu tiên nhỏ hơn, và một giá trị dương nếu giá trị đầu tiên lớn hơn.

Giá trị trả về

Hàm array_diff_uassoc() trả về một mảng chứa các phần tử từ array1 mà không có trong array2, dựa trên việc so sánh giá trị và khóa.

Ví dụ

$array1 = [
    "a" => "apple",
    "b" => "banana",
    "c" => "cherry"
];

$array2 = [
    "a" => "apple",
    "b" => "blueberry",
    "d" => "date"
];

$result = array_diff_uassoc($array1, $array2, function($value1, $value2) {
    return strcmp($value1, $value2);
});

print_r($result);

Kết quả sẽ là:

Array
(
    [b] => banana
    [c] => cherry
)

Giải thích ví dụ

Trong ví dụ trên, hàm callback sử dụng strcmp() để so sánh giá trị của các phần tử trong hai mảng. Kết quả trả về là mảng chỉ chứa các phần tử từ $array1 mà không có trong $array2 khi so sánh theo quy tắc đã định bởi hàm callback.

Kết luận

Hàm array_diff_uassoc() rất hữu ích khi bạn cần so sánh cả khóa và giá trị của các phần tử trong mảng. Bạn có thể tùy chỉnh cách so sánh bằng cách thay đổi hàm callback mà bạn truyền vào. Điều này giúp cho việc xử lý mảng trong PHP trở nên linh hoạt và mạnh mẽ hơn.