ZetCode

PHP array_intersect_assoc 函数

最后修改于 2025 年 3 月 13 日

PHP的 array_intersect_assoc 函数会比较数组,并返回在所有数组中都存在且键和值都匹配的元素。它对于查找关联数组中的精确匹配非常有用。

基本定义

array_intersect_assoc 函数会同时比较数组的键和值。它返回一个数组,其中包含第一个数组中在所有其他数组中都存在且键和值完全相同的条目。

语法:array_intersect_assoc(array $array1, array $array2, ...): array。比较对键和值都进行严格比较(===)。顺序会被保留。

基本的 array_intersect_assoc 示例

此示例演示了查找具有匹配键和值的共同元素。

basic_array_intersect_assoc.php
<?php

$array1 = ["a" => "apple", "b" => "banana", "c" => "cherry"];
$array2 = ["a" => "apple", "b" => "blueberry", "c" => "cherry"];

$result = array_intersect_assoc($array1, $array2);

print_r($result);

结果中只出现键和值都匹配的元素。“banana”和“blueberry”被排除,因为它们在键“b”下的值不同。

多个数组比较

比较两个以上的数组,找出所有具有匹配键的共同元素。

multiple_arrays.php
<?php

$array1 = ["id" => 1, "name" => "Alice", "role" => "admin"];
$array2 = ["id" => 1, "name" => "Bob", "role" => "admin"];
$array3 = ["id" => 1, "name" => "Alice", "role" => "user"];

$result = array_intersect_assoc($array1, $array2, $array3);

print_r($result);

只有键为“id”且值为 1 的元素在所有数组中都具有匹配的键。其他元素至少在一个数组中不同,因此被排除。

严格的值比较

该函数使用严格比较(===),因此类型必须完全匹配。

strict_comparison.php
<?php

$array1 = ["a" => "1", "b" => 2, "c" => 3];
$array2 = ["a" => 1, "b" => "2", "c" => 3];

$result = array_intersect_assoc($array1, $array2);

print_r($result);

只有值 3 在类型和值上都完全匹配。字符串“1”与整数 1 不匹配,字符串“2”与整数 2 不匹配,尽管它们是松散相等的。

嵌套数组行为

在比较嵌套数组时,函数会检查结构的同一性。

nested_arrays.php
<?php

$array1 = ["user" => ["id" => 1, "name" => "Alice"], "active" => true];
$array2 = ["user" => ["id" => 1, "name" => "Bob"], "active" => true];

$result = array_intersect_assoc($array1, $array2);

print_r($result);

只有“active”键完全匹配。嵌套的“user”数组在“name”值上有所不同,因此它们不被视为完全相同的匹配。

空数组处理

与空数组进行比较时,结果将始终为空。

empty_arrays.php
<?php

$array1 = ["a" => 1, "b" => 2];
$array2 = [];

$result = array_intersect_assoc($array1, $array2);

print_r($result);

空数组没有键或值可以匹配,因此交集为空。这种行为与数学集合交集原理一致。

最佳实践

来源

PHP array_intersect_assoc 文档

本教程介绍了PHP的 array_intersect_assoc 函数,并通过实际示例展示了其在比较关联数组方面的用法。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数