Hàm array_intersect() trong PHP
Trần Thị Vân
- 1215
- 28/07/2025
Chức năng của Hàm array_intersect() trong PHP
Hàm array_intersect() trong PHP dùng để nhóm các phần tử có giá trị giống nhau đều nằm trên các mảng đưa vào để tạo ra mảng mới, các phần tử ở mảng mới sẽ lấy khóa (key) của phần tử ở mảng đầu tiên khi nhóm (nếu mảng đầu tiên có 2 phần tử có giá trị giống nhau thì khi đưa qua mảng mới sẽ lấy luôn 2 phần tử và khóa (key) của 2 phần tử qua).
Cú pháp của Hàm array_intersect() trong PHP
$mảng_mới = array_intersect($mảng_1,$mảng_2,$mảng_3);
$mảng_1,$mảng_2,$mảng_3: Các biến mảng đưa vào để nhóm, đưa 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 chứa các phần tử có giá trị giống nhau trên tất cả các mảng đưa vào và lấy khóa (key) của mảng đầu tiên (nếu mảng đầu tiên có 2 phần tử có giá trị giống nhau thì khi đưa qua mảng mới sẽ lấy luôn 2 phần tử và khóa (key) của 2 phần tử qua).
Ví dụ Hàm array_intersect() trong PHP
<h2>array_intersect() Mảng đầu tiên có 1 phần tử có cùng giá trị</h2>
<?php
$mang1 = array("Quỳnh","Lực","Dung","Chery","Vân");
$mang2 = array("Vân","Jeny","Tom","Cr7","Lực");
$mang3 = array("Vân","Tom","Cr7","Lực");
$mangmoi = array_intersect($mang1,$mang2, $mang3);
foreach($mangmoi as $key => $value){
echo $key." - ".$value."<br>";
}
?>
<h2>array_intersect() Mảng đầu tiên có 2 phần tử có cùng giá trị</h2>
<?php
$mang1 = array("Quỳnh","Vân","Lực","Dung","Chery","Vân");
$mang2 = array("Vân","Jeny","Tom","Cr7","Lực");
$mang3 = array("Vân","Tom","Cr7","Lực");
$mangmoi = array_intersect($mang1,$mang2, $mang3);
foreach($mangmoi as $key => $value){
echo $key." - ".$value."<br>";
}
?>
Kết quả:
/////array_intersect() Mảng đầu tiên có 1 phần tử có cùng giá trị
1 - Lực
4 - Vân
/////array_intersect() Mảng đầu tiên có 2 phần tử có cùng giá trị
1 - Vân
2 - Lực
5 - Vân
Những lưu ý khi sử dụng array_intersect() trong PHP
Khi sử dụng array_intersect(), điều quan trọng không chỉ là biết cách gọi hàm mà còn phải hiểu cách PHP xác định các phần tử giống nhau. Nắm rõ nguyên tắc này giúp hạn chế kết quả sai khi dữ liệu có kiểu giá trị hoặc cấu trúc khác nhau.
array_intersect() so sánh phần tử như thế nào?
array_intersect() kiểm tra các giá trị xuất hiện trong mảng đầu tiên và đối chiếu chúng với những mảng được truyền vào sau. Kết quả chỉ giữ lại các giá trị có mặt trong tất cả các mảng được so sánh.
Hàm tập trung vào giá trị của phần tử, không yêu cầu các phần tử phải có cùng vị trí. Vì vậy, hai giá trị giống nhau vẫn được xem là giao nhau ngay cả khi chúng nằm ở các vị trí khác nhau trong từng mảng.
Một điểm cần lưu ý là hàm giữ lại key của mảng đầu tiên đối với những phần tử được tìm thấy. Do đó, kết quả có thể không có hệ thống chỉ số liên tục như một mảng mới thông thường.
Khi nào nên dùng array_intersect() thay vì vòng lặp?
Nên sử dụng array_intersect() khi mục tiêu rõ ràng là tìm các giá trị chung giữa hai hoặc nhiều mảng. Cách này giúp mã nguồn ngắn gọn, dễ đọc và thể hiện trực tiếp ý định xử lý dữ liệu.
Vòng lặp phù hợp hơn khi quá trình kiểm tra cần thêm điều kiện riêng, chẳng hạn phải xử lý từng phần tử, biến đổi dữ liệu hoặc thực hiện nhiều thao tác khác nhau trước khi đưa ra kết quả.
Với bài toán đơn giản như kiểm tra danh sách sản phẩm, mã định danh hoặc các giá trị xuất hiện đồng thời trong nhiều tập dữ liệu, array_intersect() thường là lựa chọn dễ bảo trì hơn so với tự xây dựng vòng lặp.
Những lỗi thường gặp khi xử lý nhiều mảng
- Nhầm array_intersect() với các hàm so sánh mảng dựa trên cả key và value.
- Cho rằng vị trí của phần tử trong các mảng phải giống nhau mới được xem là trùng.
- Quên rằng kết quả có thể giữ lại key ban đầu của mảng thứ nhất.
- Không kiểm tra dữ liệu đầu vào trước khi thực hiện phép giao giữa nhiều mảng.
- Dùng array_intersect() cho trường hợp cần so sánh cả khóa hoặc cần điều kiện xử lý phức tạp.
Khi làm việc với nhiều mảng, nên xác định trước cần so sánh giá trị, key hay cả hai. Đây là bước quan trọng để lựa chọn đúng hàm PHP và tránh phải xử lý lại kết quả sau khi so sánh.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm array_intersect() trong PHP.
- 0 Bình luận
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 *