1. Hàm array_intersect() trong PHP
Hàm array_intersect() trong PHP có tác dụng so sánh các value của hai hay nhiều mảng với nhau. Tuy nhiên ta chỉ so sánh được giá trị của value của mảng đầu tiên với các mảng còn lại. Tức là nếu có value ở mảng đầu tiên xuất hiện ở các mảng sau thì giá trị này của mảng sẽ được in ra. Đối với mảng có value giống mảng khác nhưng lại không xuất hiện trong mảng đầu tiên thì giá trị của mảng này cũng không được hiển thị.
Kết quả được trả về sẽ là một mảng chứa những phần tử ở mảng đầu tiên mà có value tồn tại ở các mảng còn lại. Cùng với đó key của mảng mới sẽ được giữ nguyên so với mảng ban đầu.
Chú ý
Ở đây phần tử bằng nhau trong lập trình có nghĩa là nó được biểu diễn chuỗi giống nhau. Hay nó có thể nhìn giống như sau:
(string) $elem1 === (string) $elem2
2. Cú pháp hàm array_intersect() trong PHP
Ta có cú pháp của hàm array_intersect() trong PHP là :
rray_intersect($array1, $array2, $array3,...)
Trong đó :
- array1 : Bắt buộc. Mảng để so sánh
- array2 : Bắt buộc. Mảng so sánh với mảng array1
- array3 : Tùy ý. Một mảng khác để so sánh với mảng array1
Hàm array_intersect() nhận ít nhất hai mảng làm đối số. Hàm này cũng có thể nhận số mảng truyền vào tùy ý và được ngăn cách nhau bởi dấu phẩy (,) . Trong đó mảng đầu tiên(array1) sẽ được so sánh với các mảng còn lại. Như mình đã nói ở trên thì giá trị trả về sẽ là một mảng mới chứa những phần tử ở mảng đầu tiên mà có value tồn tại ở các mảng còn lại. Nếu không có phần tử nào khới thì một mảng null (rỗng) được trả về. Key của mảng mới cũng được giữ nguyên so với mảng ban đầu (array1).
Ví dụ: so sánh value của hai mảng
<?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("e"=>"red","f"=>"green","g"=>"blue"); $result=array_intersect($a1,$a2); print_r($result); ?>
Kết quả
Array ( [a] => red [b] => green [c] => blue )
Trong ví dụ ta có thể thấy cả hai mảng $a1 và $a2 đều có những value giống nhau là red , green , blue . Và kết quả in ra màn hình chính là những value này với key được giữ nguyên ( key ở mảng $a1 )
3. Ví dụ về hàm array_intersect() trong PHP
Ví dụ 1: so sánh value của ba mảng
<?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("e"=>"red","f"=>"black","g"=>"purple"); $a3=array("a"=>"black","b"=>"red","h"=>"yellow"); $result=array_intersect($a1,$a2,$a3); print_r($result); ?>
Kết quả
Array ( [a] => red )
Ta có thể thấy mảng $a1 chỉ có value là red giống với các mảng còn lại nên chỉ có value này được in ra màn hình. Còn với value là yellow tuy nó giống với value của mảng $a3 nhưng lại không giống với mảng $a2 nên không được in ra màn hình.
Ví dụ 2:
<?php $a1=array('100','200','300','400'); $a2=array('100','200','300'); $result=array_intersect($a1, $a2); print_r($result); ?>
Kết quả
Array ( [0] => 100 [1] => 200 [2] => 300 )
Ví dụ 3:
<?php $array1 = array("a" => "green", "red", "blue"); $array2 = array("b" => "green", "yellow", "red"); $result = array_intersect($array1, $array2); print_r($result); ?>
Kết quả
Array ( [a] => green [0] => red )