PHP
PHP

Trang chủ

Tìm hiểu về hàm array_diff_uassoc() trong PHP

PHP, viết tắt của Hypertext Preprocessor, là ngôn ngữ lập trình script phía máy chủ được thiết kế đặc biệt cho phát triển web. Điểm nổi bật của PHP so với các ngôn ngữ khác là khả năng tương thích với nhiều loại cơ sở dữ liệu và chạy mượt mà trên các máy chủ web. Tại Vietnix, chúng tôi không chỉ giới thiệu những khái niệm cơ bản về PHP mà còn cung cấp các ví dụ thực tế giúp bạn dễ dàng hiểu và áp dụng PHP vào việc phát triển website. Bên cạnh đó, Vietnix cũng thường xuyên cập nhật các bài viết mới về tính năng, mẹo và thủ thuật lập trình, giúp bạn giải quyết các thách thức phức tạp, từ đó không ngừng nâng cao và hoàn thiện kỹ năng lập trình của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
20/06/2024
6 phút đọc
Theo dõi Vietnix trên

Tìm hiểu về hàm array_diff_uassoc() trong PHP

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 array_diff_uassoc() trong PHP
Hàm array_diff_uassoc() trong PHP

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. 

Lưu ý: Hàm này khác với array_diff_assoc() vì trong hàm array_diff_assoc() các key được so sánh dựa theo một số hàm nội bộ trong khi trong hàm array_diff_uassoc() các key được so sánh theo một hàm do người dùng xác định được truyền cho nó dưới dạng tham số.

Cú pháparray_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!

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn