Hàm array_diff_assoc() trong PHP

Hàm array_diff_assoc() trong PHP
Hàm array_diff_assoc() trong PHP

Chức năng của Hàm array_diff_assoc() trong PHP

Hàm array_diff_assoc() trong PHP dùng để lấy các phần tử của mảng đầu tiên có khóa(key) và giá trị đều khác với các phần tử ở các mảng khác để tách vô một mảng mới, hàm này không làm thay đổi các mảng gốc.

Cú pháp của Hàm array_diff_assoc() trong PHP

$mảng_mới = array_diff_assoc($biến_mảng_1,$biến_mảng_2,$biến_mảng_3);

$biến_mảng_1,$biến_mảng_2,$biến_mảng_3: Thêm vào bao nhiêu mảng cũng được, từ 2 mảng trở lên.

$mảng_mới: Kết quả trả về mảng mới mà không làm thay đổi các mảng gốc.

Ví dụ Hàm array_diff_assoc() trong PHP

<h2>Hàm array_diff_assoc() các mảng thường</h2>
<?php
$mangmot = array("Dung","Vân","Lực","Quỳnh");
$manghai= array("Dung","Vân","Lực","Cherry");
$mangba= array("Dung","Vân","Lực","Nhím");
$mangmoi = array_diff_assoc($mangmot,$manghai,$mangba);
print_r($mangmoi); // Kết quả: Array ( [3] => Quỳnh )
?>

<h2>Hàm array_diff_assoc() các mảng liên kết</h2>
<?php 
$manglkmot = array("Dung"=>29,"Van"=>28,"Nhím"=>28,"Luc"=>35);
$manglkhai = array("Cherry"=>29,"Van"=>28,"Quynh"=>1);
$manglkba = array("Cherry"=>29,"Van"=>30,"Luc"=>35);
$manglkmoi = array_diff_assoc($manglkmot,$manglkhai,$manglkba);
print_r($manglkmoi); // Kết quả: Array ( [Dung] => 29 [Nhím] => 28 )
?>

<h2>Hàm array_diff_assoc() giữa mảng bình thường và mảng liên kết</h2>
<?php 
$manglkmot = array("Dung"=>29,"Van"=>28,"Nhím"=>28,"Luc"=>35);
$manglkhai = array("Dung"=>28,"Van"=>30,"Quynh"=>1);
$mangbtba = array(29,35,2);
$manglkmoi = array_diff_assoc($manglkmot,$manglkhai,$mangbtba);
print_r($manglkmoi); // Kết quả: Array ( [Dung] => 29 [Van] => 28 [Nhím] => 28 [Luc] => 35 )
?>

Kết quả:

/////Hàm array_diff_assoc() các mảng thường
Array ( [3] => Quỳnh )

/////Hàm array_diff_assoc() các mảng liên kết
Array ( [Dung] => 29 [Nhím] => 28 )

/////Hàm array_diff_assoc() giữa mảng bình thường và mảng liên kết
Array ( [Dung] => 29 [Van] => 28 [Nhím] => 28 [Luc] => 35 )

Chạy Thử

Kinh nghiệm sử dụng array_diff_assoc() trong PHP

Khi làm việc với dữ liệu dạng mảng, array_diff_assoc() phù hợp với những trường hợp cần tìm các phần tử chỉ xuất hiện ở mảng thứ nhất dựa trên cả key và value. Tuy nhiên, để kết quả đúng với mục đích xử lý, bạn nên xác định rõ cách so sánh trước khi áp dụng.

Khi nào nên dùng array_diff_assoc() thay vì array_diff()?

Điểm khác biệt quan trọng nằm ở cách hai hàm xác định phần tử tương ứng. array_diff() chỉ quan tâm đến giá trị, trong khi array_diff_assoc() xét đồng thời cả khóa và giá trị.

Vì vậy, nếu hai mảng có cùng value nhưng khác key và bạn muốn xem chúng là hai phần tử khác nhau, array_diff_assoc() sẽ phù hợp hơn.

<?php
$mang1 = [
    'name' => 'Web Mới'
];

$mang2 = [
    'title' => 'Web Mới'
];

$ketQua = array_diff_assoc($mang1, $mang2);

print_r($ketQua);
?>

Trong ví dụ trên, value đều là Web Mới nhưng key không giống nhau. Do đó, phần tử trong $mang1 vẫn được giữ lại trong kết quả.

Những lỗi thường gặp khi so sánh mảng bằng array_diff_assoc()

Một lỗi dễ gặp là chỉ nhìn vào value rồi cho rằng hai phần tử giống nhau. Với array_diff_assoc(), key cũng tham gia vào quá trình đối chiếu nên cùng value chưa chắc tạo ra kết quả rỗng.

Ngoài ra, cần chú ý mảng được truyền ở vị trí đầu tiên. Hàm tìm những phần tử của mảng thứ nhất không có cặp key-value tương ứng trong các mảng phía sau. Vì thế, việc đảo vị trí các mảng có thể làm thay đổi kết quả.

Đối với mảng nhiều chiều, không nên mặc định rằng hàm sẽ thực hiện so sánh sâu toàn bộ cấu trúc bên trong. Nếu dữ liệu phức tạp, nên kiểm tra lại cấu trúc trước khi lựa chọn phương pháp so sánh.

Cách xử lý kết quả trả về từ array_diff_assoc()

Kết quả của array_diff_assoc() là một mảng mới chứa các phần tử được tìm thấy ở mảng đầu tiên nhưng không có cặp key-value tương ứng trong các mảng còn lại. Các key của phần tử được giữ lại thay vì tự động đánh lại từ đầu.

Điều này đặc biệt hữu ích khi bạn muốn biết chính xác phần dữ liệu nào đang tồn tại ở nguồn thứ nhất nhưng chưa xuất hiện ở nguồn đối chiếu.

<?php
$duLieuCu = [
    'name' => 'Web Mới',
    'type' => 'PHP',
    'version' => 8
];

$duLieuMoi = [
    'name' => 'Web Mới',
    'type' => 'PHP'
];

$thayDoi = array_diff_assoc($duLieuCu, $duLieuMoi);

print_r($thayDoi);
?>

Khi xử lý kết quả, bạn có thể tiếp tục dùng các hàm mảng khác tùy mục đích, chẳng hạn kiểm tra mảng có rỗng hay không trước khi thực hiện bước xử lý tiếp theo. Cách này giúp tránh việc chạy thêm logic khi không có phần tử nào khác biệt.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm array_diff_assoc() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm array_diff_assoc() trong PHP
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !