1. Hàm array_diff_ukey() trong PHP

Hàm array_diff_ukey() trong PHP giúp ta so sánh key của hai hay nhiều mảng với nhau bằng một hàm callback do người dùng xác định và truyền vào. Ta có hiểu hàm này giống như hàm array_diff_ukey() cũng gàn giống với hàm array_diff() ngoại trừ việc so sánh được thực hiện trên các key thay vì value . Không giống hàm array_diff_key() , một hàm callback do người sử dụng cung cấp để so sánh các chỉ mục, cứ không phải sử dụng một hàm có trước của PHP.

Hàm này sẽ trả về một mảng mà key của mảng chỉ tồn tại ở mảng đầu tiên và không tồn tại ở các array còn lại. Hàm này được giới thiệu và sư dụng từ phiên bản PHP 5.1

2. Cú pháp của hàm array_diff_ukey() trong PHP

Ta có cú pháp của hàm arrar_diff_ukey() trong PHP là :

array_diff_ukey(array1, array2, array3, ..., callback $key_compare_func)

Trong đó :

  • array1 : Bắt buộc. Mảng nguồn để mảng khác so sánh với
  • array2 : Bắt buộc. Một mảng để được so sánh với mảng nguồn
  • array3 : Tùy ý. Một mảng để được so sánh với mảng nguồn
  • Hàm này phải trả về 0 nếu $key1 = $key2, lớn hơn 0 nếu $key1 > $key2 và bé hơn 0 nếu $key1 < $key2
  • Sự so sánh dựa vào thứ tự trong mã ASCII

Giá trị trả về là một mảng chứa các key của array1 không có trong các mảng khác. Nếu tất cả các giá trị có trong các mảng khác, hàm trả về NULL.

Hàm này cũng sẽ chỉ kiểm tra một chiều của mảng đa chiều. Nếu muốn kiểm tra sâu hơn trong mảng đa chiều ta sẽ sử dụng cú pháp sau:

array_diff_ukey($array1[0], $array2[0], 'callback_func');

Ví dụ:

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

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");

$result=array_diff_ukey($a1,$a2,"myfunction");
print_r($result);
?>

Kết quả

Array ( [c] => blue )

3. Ví dụ về hàm array_diff_ukey() trong PHP

Ví dụ 1: so sánh 3 mảng

<?php
function arr_diffukeyFunction($one, $two)
{
    if ($one === $two) {
        return 0;
    }
    return ($one > $two) ? 1 : -1;
}

$arr1 = array(
    "one" => "C",
    "two" => "PHP",
    "three" => "Java"
);
$arr2 = array(
    "one" => "Python",
    "two" => "C++",
    "four" => "CSS"
);
$arr3 = array(
    "five" => "HTML",
    "six" => "C#",
    "one" => "JavaScript"
);

$result = array_diff_ukey($arr1, $arr2, $arr3, "arr_diffukeyFunction");
print_r($result);
?>

Kết quả

Array ( [three] => Java )

Ví dụ 2: so sánh 2 mảng và trả về null

<?php
function arr_diffukeyFunction($one, $two)
{
    if ($one === $two) {
        return 0;
    }
    return ($one > $two) ? 1 : -1;
}

$arr1 = array(
    "one" => "C",
    "two" => "PHP"
);
$arr2 = array(
    "one" => "Java",
    "two" => "C++"
);

$result = array_diff_ukey($arr1, $arr2, "arr_diffukeyFunction");
print_r($result);
?>

Kết quả

Array ( )

Ví dụ 3: sử dụng hàm nhưng chỉ có một mảng được truyền vào

<?php
function arr_diffukeyFunction($one, $two)
{
    if ($one === $two) {
        return 0;
    }
    return ($one > $two) ? 1 : -1;
}
$arr1 = array(
    "one" => "C",
    "two" => "PHP",
    "three" => "Java"
);

$result = array_diff_ukey($arr1, "arr_diffukeyFunction");
print_r($result);
?>

Kết quả

PHP Warning: array_diff_ukey(): at least 3 parameters are required, 2 given in /home/a1GkYl/prog.php on line 15

Ở đây nếu chúng ta sử dụng hàm array_diff_ukey() mà chỉ truyền vào một hàm thì một cảnh báo sẽ được hiển thị