1. Hàm array_intersect_assoc() trong PHP
Hàm array_intersect_assoc() trong PHP cũng giống như hàm array_intersect() dùng để so sánh hai hay nhiều mảng với nhau. Tuy nhiên với hàm array_intersect() ta chỉ lấy value của mảng ban đầu ra so sánh với những mảng còn lại. Còn với hàm array_intersect_assoc() sẽ lấy cả key và value của mảng ban đầu ra so sánh với những mảng còn lại. Có nghĩa là hàm này sẽ tạo ra một mảng mới chứa key và value của mảng ban đầu giống với những mảng còn lại.
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_assoc() trong PHP
Ta có cú pháp của hàm array_intersect_assoc() trong PHP là:
array_intersect_assoc($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_assoc() 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 cả key và value với các mảng còn lại. Giá trị được trả về sẽ là một mảng mới chứa giá trị có key và value của mảng array1 giống với key và value của các mảng đằng sau. Hàm này ta có thể được coi là ngược lại của hàm array_diff_assoc() . Nếu như không có phần tử nào trùng khới thì một mảng null (rỗng) sẽ được trả về.
Ví dụ : so sánh key và value của hai mảng
<?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("a"=>"red","b"=>"green","c"=>"blue"); $result=array_intersect_assoc($a1,$a2); print_r($result); ?>
Kết quả
Array ( [a] => red [b] => green [c] => blue )
3. Ví dụ hàm array_intersect_assoc() trong PHP
Ví dụ 1: so sánh key và value của ba mảng
<?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("a"=>"red","b"=>"green","g"=>"blue"); $a3=array("a"=>"red","b"=>"green","g"=>"blue"); $result=array_intersect_assoc($a1,$a2,$a3); print_r($result); ?>
Kết quả
Array ( [a] => red [b] => green )
Ví dụ 2:
<?php function Intersect($array1, $array2, $array3) { $result = array_intersect_assoc($array1, $array2, $array3); return($result); } $array1 = array("1" => "red", "2" => "black", "3" => "blue"); $array2 = array("1" => "red", "2" => "black", "3" => "whirte"); $array3 = array("1" => "red", "2" => "blacks", "3" => "yellow"); print_r(Intersect($array1, $array2, $array3)); ?>
Kết quả
Array ( [1] => red )
Trong ví dụ này ta có thể thấy chỉ có cặp key/value thỏa mãn là “1” => “red” . Còn những cặp key/value khác đều không thỏa mãn: khác giá trị value hoặc khác giá trị key . Đồng thời giá trị key/value của mảng đầu tiên phải giống với những mảng còn lại. Nếu chỉ giống một mảng mà lại khác mảng kia thì giá trị đó cũng không được trả về.
Ví dụ 3:
<?php $color1 = array("a" => "black", "red", "blue"); $color2 = array("a" => "black", "yellow", "red"); $result = array_intersect_assoc($color1, $color2); print_r($result); ?>
Kết quả
Array ( [a] => black )