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ả keyvalue 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 keyvalue 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ả keyvalue 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ó keyvalue của mảng array1 giống với keyvalue 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 keyvalue 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 keyvalue 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 )