array_diff_uassoc() trong php

# Description

Hàm array_diff_uassoc() sẽ trả về một mảng các phần tử theo điều kiện của hàm $key_compare_func truyền vào, điều này khác với array_diff_assoc() là hàm để so sánh theo toán tử bằng.

# Parameters

Cú pháparray array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

Trong đó:

  • $array1 là mảng thứ nhất, kết quả trả về sẽ nằm trong mảng này
  • $array2 là mảng thứ hai
  • ...
  •  $key_compare_func là hàm do người dùng định nghĩa, nếu kết quả nó trả về true thì phần tử lượt check đó được chọn, ngược lại sẽ không được chọn và hàm này so sánh các $key thay vì value :
    • Hàm này phải trả về 0 nếu $key1 = $key2, lớn hơn 0 nếu $key1 > $key2bé hơn 0 nếu $key1 < $key2
    • Sự so sánh dựa vào thứ tự trong mã ASCII

Để rõ hơn thì bạn nên xem qua hàm array_diff_assoc() và sau đó xem các ví dụ dưới đây.

# Return values

Hàm sẽ trả về một mảng (mảng con của $array1) gồm các phần tử được quyết định bởi $key_compare_func.

# Examples

Trong ví dụ này hàm key_compare_func sẽ có hai tham số truyền vào là $a$b chính là các key lần lượt là key của  mảng thứ nhất trong danh sách tham số truyền vào và các key của mảng còn lại. Nếu hàm trả về khác 0 (lớn hơn 0 hoặc bé hơn 0) thì phần tử của lượt đó được chọn.

Code:

function key_compare_func($a, $b)
{
    if ($a === $b) {
        return 0;
    }
    return ($a > $b)? 1:-1;
}

$array1 = array(
    "a" => "freetuts", 
    "b" => "www", 
    "c" => "https://freetuts.net"
);

$array2 = array(
    "a" => "freetuts", 
    "b" => "www", 
    "c" => "http://freetuts"
);
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
echo '<pre>';
print_r($result);
Result

Array
(
    [c] => https://freetuts.net
)

Như vậy chỉ có key c là được chọn lý do là nó không tồn tại bên $array2 

 

Các loại function khác

Nguồn: freetuts.net