Hàm array_diff_uassoc()
trong PHP được sử dụng để tìm ra các phần tử có sự khác biệt giữa hai hay nhiều mảng, dựa trên các hàm so sánh do người dùng định nghĩa. Cụ thể, nó cho phép bạn chỉ định một hàm callback để so sánh các cặp khóa-giá trị (key-vakue) từ các mảng và trả về các phần tử chỉ có trong mảng đầu tiên. Hãy cùng Vietnix tìm hiểu thêm về hàm array_diff_uassoc()
trong PHP qua bài viết sau đây.
Hàm array_diff_uassoc() là gì?
Hàm array_diff_uassoc()
là một hàm tích hợp trong PHP và được sử dụng để lấy sự khác biệt giữa một hoặc nhiều mảng bằng cách sử dụng hàm do người dùng xác định để so sánh các key.
Hàm này so sánh cả key và value giữa một hoặc nhiều mảng và trả về các phần tử từ mảng đầu tiên không có trong các mảng còn lại. Các key được so sánh theo hàm do người dùng xác định được cung cấp cho hàm này.
Cú pháp | array_diff_uassoc($array1, $array2, $array3, ..., $arrayn, user_function) |
Tham số | Hàm này chấp nhận danh sách (kiểu dữ liệu list) chứa các mảng làm tham số và hàm do người dùng xác định sẽ được sử dụng để so sánh key. – list_of_array: Hàm này lấy danh sách các mảng được phân tách bằng dấu cách mà bạn muốn tìm sự khác biệt. Theo cú pháp trên, danh sách mảng là $array1, $array2, $array3, …, $arrayN . Danh sách này phải chứa ít nhất hai mảng nếu không sẽ đưa ra cảnh báo lỗi. – user_function: Đây là tham số kiểu chuỗi và đại diện cho tên của hàm do người dùng xác định sẽ được sử dụng để so sánh key. Hàm trả về một số nguyên nhỏ hơn, lớn hơn hoặc bằng 0 nếu đối số thứ nhất lớn hơn, nhỏ hơn hoặc bằng đối số thứ hai. |
Giá trị trả về | Hàm này trả về một mảng chứa các phần tử của mảng đầu tiên $array1 không có trong các mảng khác được truyền cho nó trong các tham số. Việc so sánh được thực hiện giữa key và value của mảng $array1 đầu tiên với các mảng còn lại. Việc so sánh các key được thực hiện theo hàm do người dùng xác định. |
Bạn có thể xem qua ví dụ sau:
Input: $a1=array(10=>"river", 20=>"lake", 30=>"ocean")
$a2=array(20=>"river", 10=>"lake", 30=>"ocean")
function user_function($a, $b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
Output: Array
(
[10] => river
[20] => lake
)
Trong bài ví dụ trên, vì “user_function” trả về 0 khi các key bằng nhau hoặc bằng 1 khi key trước lớn hơn và sẽ là -1 khi key trước nhỏ hơn. Dựa vào giá trị trả về của “user_function”, các phần tử trong mảng sẽ được sắp xếp trong một mảng kết quả mới. Những phần tử có “key” khác nhau (không bằng nhau) mới được bao gồm trong mảng kết quả.
Mọi người cũng xem:
Ví dụ minh hoạ hàm array_diff_uassoc() trong PHP
- Ví dụ 1:
<?php
// PHP program to illustrate the
// array_diff_uassoc() function
// user defined function that returns 0 if
// $array1's keys are equal to any other
// input array, else returns 1 if greater,
// or -1 if smaller
function user_function($a, $b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)? 1: -1;
}
// Input Arrays
$a1=array(10=>"river", 20=>"lake", 30=>"ocean");
$a2=array(20=>"river", 10=>"lake", 30=>"ocean");
$result = array_diff_uassoc($a1, $a2, "user_function");
print_r($result);
?>
Output như sau:
Array ( [10] => river [20] => lake )
- Ví dụ 2:
<?php
// PHP program to illustrate the
// array_diff_uassoc() function
// user defined function that returns 1 if
// $array1's keys are equal to any other
// input array, else returns 1 if greater,
// or 0 if smaller
function user_function($a, $b)
{
if ($a===$b)
{
return 1;
}
return ($a>$b)? 1: 0;
}
// Input Arrays
$a1 = array(10=>"river", 20=>"lake", 30=>"ocean");
$a2 = array(20=>"river", 10=>"lake", 30=>"ocean");
$result=array_diff_uassoc($a1, $a2, "user_function");
print_r($result);
?>
Output như sau:
Array ( [20] => lake [30] => ocean )
Dùng hàm array_diff_uassoc() trong mảng đa chiều
Hàm array_diff_uassoc()
chỉ hoạt động với mảng một chiều, để kiểm tra mảng nhiều chiều với hàm này, chúng ta có thể sử dụng phương pháp lập index.
Ví dụ trong mảng 2 chiều:
array_diff_assoc($array1[index], $array2[index], $array3[index], ..., $arrayn[index], user_function)
Trong chương trình dưới đây, bạn sẽ so sánh hai mảng được đặt ở vị trí chỉ số đầu tiên của mảng 2 chiều a1 và a2.
<?php
function user_function($a, $b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)? 1: -1;
}
// Input Arrays
$a1 = array(array("a" => "green", "b" => "yellow", "c" => "white", "black"), "b" => "brown", "c" => "blue", "red");
$a2 = array(array("a" => "green", "b" => "yellow", "white", "d" => "black"), "yellow", "red");
$result = array_diff_uassoc($a1[0], $a2[0], "user_function");
print_r($result);
?>
Output như sau:
Array ( => white [0] => black )
Lời kết
Vietnix hy vọng nội dung bài viết trên đã giúp bạn hiểu rõ hơn về hàm array_diff_uassoc()
trong PHP. Ngoài ra, bạn cũng có thể tham khảo thêm các bài viết khác tại vietnix.vn để hiểu hơn về lập trình, chúc bạn thành công!