array_intersect 是 php 获取多个数组交集的函数,返回所有数组共有的值并保留首个数组的键名;值比较用松散模式(==),支持任意数量数组及关联数组。

array_intersect 是 PHP 中用来获取多个数组交集的内置函数,它会返回一个新数组,包含所有参数数组中都存在的值(按第一个数组的键名顺序保留)。
基本用法和规则
该函数比较的是值,不是键名;键名只保留第一个数组中对应元素的原始键名;重复值在第一个数组中出现多次,结果也会保留多次。
- 至少需要两个数组作为参数,如
array_intersect($arr1, $arr2) - 所有参数必须是数组,否则会报 Warning
- 比较时使用松散比较(==),即
1和"1"被视为相等 - 如果要严格比较(===),应改用
array_intersect_assoc或自定义逻辑
简单示例
比如有两个用户 ID 列表,想找出共同关注的人:
$a = [101, 102, 103, 104]; $b = [102, 103, 105, 106]; $result = array_intersect($a, $b); // 输出:[1 => 102, 2 => 103]
注意:结果保留了 $a 中的键名(1 和 2),而不是重排为 0、1。
多个数组取交集
可以传入任意多个数组,结果只保留同时存在于所有数组中的值:
$a = ['a', 'b', 'c']; $b = ['b', 'c', 'd']; $c = ['c', 'd', 'e']; $result = array_intersect($a, $b, $c); // 输出:[2 => 'c']
只有 'c' 在三个数组里都存在,所以结果只有一个元素。
处理关联数组
如果是关联数组(带字符串键),array_intersect 仍按值匹配,但保留第一个数组的键名:
$user1 = ['name' => 'Tom', 'age' => 25, 'city' => 'Beijing']; $user2 = ['id' => 1001, 'age' => 25, 'city' => 'Shanghai']; $result = array_intersect($user1, $user2); // 输出:['age' => 25]
因为只有 25 这个值同时出现在两个数组中,且 $user1 中键名为 'age',所以结果保留该键名。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











