ZetCode

PHP array_intersect 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_intersect 函数比较数组并返回所有数组中存在的“值”。它对于查找共同元素非常有用。

基本定义

array_intersect 函数计算数组的交集。它返回一个包含所有输入数组中存在的“所有值”的数组。

语法:array_intersect(array $array1, array $array2, ...): array。键会从第一个数组保留。比较是使用松散类型进行的。

基本的 array_intersect 示例

这展示了如何查找两个简单数组之间的共同数字。

basic_array_intersect.php
<?php

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];

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

print_r($result);

这会查找两个数组都存在的数字。结果包含 3、4 和 5,并保留了它们在第一个数组中的原始键。

字符串值交集

查找多个数组之间的共同字符串值。

string_intersection.php
<?php

$colors1 = ["red", "green", "blue"];
$colors2 = ["green", "blue", "yellow"];
$colors3 = ["blue", "purple", "green"];

$commonColors = array_intersect($colors1, $colors2, $colors3);

print_r($commonColors);

这会查找所有三个数组中存在的颜色。只有“green”和“blue”出现在所有输入数组中,因此它们会与它们的原始键一起返回。

关联数组交集

在保留键的同时查找关联数组中的共同值。

associative_intersect.php
<?php

$users1 = [
    "admin" => "Alice",
    "editor" => "Bob",
    "viewer" => "Charlie"
];

$users2 = [
    "manager" => "Alice",
    "editor" => "Bob",
    "guest" => "Dave"
];

$commonUsers = array_intersect($users1, $users2);

print_r($commonUsers);

这会查找关联数组中的共同值。结果保留了第一个数组的键,显示 Alice 和 Bob 在两个数组中都是共同的。

混合类型比较

演示 array_intersect 如何通过松散比较处理不同的类型。

mixed_types.php
<?php

$array1 = [1, "2", 3, "4", true];
$array2 = ["1", 2, "3", 4, false];

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

print_r($result);

这显示了松散类型比较。字符串“1”等于整数 1,而“3”等于 3,因此尽管类型不同,这些值也会包含在结果中。

多个数组交集

查找两个以上数组之间的共同元素。

multiple_arrays.php
<?php

$array1 = [10, 20, 30, 40, 50];
$array2 = [20, 30, 50, 60];
$array3 = [10, 20, 30, 70];
$array4 = [20, 30, 80, 90];

$common = array_intersect($array1, $array2, $array3, $array4);

print_r($common);

这会查找所有四个数组中存在的“值”。只有 20 和 30 出现在每个输入数组中,因此它们会与它们在第一个数组中的原始键一起返回。

最佳实践

来源

PHP array_intersect 文档

本教程通过实际示例介绍了 PHP array_intersect 函数,展示了其查找共同数组元素的使用方法。

作者

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

列出 所有 PHP 数组函数