当前位置: 首页> 最新文章列表> 如何用array_intersect函数判断两个数组是否存在交集?代码示例和思路详解

如何用array_intersect函数判断两个数组是否存在交集?代码示例和思路详解

gitbox 2025-09-01
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 这部分内容和文章无关,仅用于展示分隔</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文章开始如下..."</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-comment"># 如何用array_intersect函数判断两个数组是否存在交集?代码示例和思路详解</span></span><span>

在 PHP 的日常开发中,我们经常会遇到这样的需求:判断两个数组中是否存在相同的元素。比如在权限控制、标签匹配、关键词过滤等场景下,都需要快速得出两个数组是否有交集。此时,`array_intersect` 函数就是一个非常好用的工具。

</span><span><span class="hljs-comment">## 一、array_intersect 函数简介</span></span><span>

`array_intersect` 的作用是:返回两个或多个数组中都存在的值。换句话说,它会比较数组的值,然后输出一个新的数组,其中包含所有出现在所有参数数组中的元素。

基本语法如下:

```php
</span><span><span class="hljs-title function_ invoke__">array_intersect</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $array1:必选参数,待比较的第一个数组。

  • $array2:必选参数,待比较的第二个数组。

  • ...$arrays:可选参数,更多需要参与比较的数组。

  • 返回值:一个包含所有交集元素的新数组。

二、判断两个数组是否存在交集的思路

思路很简单:

  1. 使用 array_intersect 取出两个数组的交集。

  2. 如果结果数组不为空,就说明存在交集;反之,则不存在。

三、代码示例

下面是一个简单的示例,演示如何判断两个数组是否有交集:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>, </span><span><span class="hljs-number">7</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>];

</span><span><span class="hljs-comment">// 使用 array_intersect 取交集</span></span><span>
</span><span><span class="hljs-variable">$intersection</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$intersection</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"两个数组存在交集,交集元素为: "</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$intersection</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"两个数组没有交集"</span></span><span>;
}
</span></span>

输出结果为:

<span><span>两个数组存在交集,交集元素为: </span><span><span class="hljs-title class_">Array</span></span><span> ( [</span><span><span class="hljs-number">3</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span> [</span><span><span class="hljs-number">4</span></span><span>] =&gt; </span><span><span class="hljs-number">5</span></span><span> )
</span></span>

可以看到,数组 $array1$array2 的交集为 [4, 5],因此返回的结果不为空。

四、进一步优化的判断方式

在有些情况下,我们只关心 是否存在交集,而不是具体的交集元素。这时可以简化逻辑:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-string">'orange'</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-string">'grape'</span></span><span>, </span><span><span class="hljs-string">'peach'</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span>];

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">array_intersect</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"存在交集"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"不存在交集"</span></span><span>;
}
</span></span>

这样就能更直观地得到结果。

五、应用场景举例

  1. 权限校验
    用户角色数组与系统权限数组取交集,若不为空则说明用户具备访问权限。

  2. 标签匹配
    用户兴趣标签与内容标签取交集,若存在则推荐相关内容。

  3. 关键词过滤
    用户输入的关键词数组与敏感词数组取交集,若有交集则提示或拦截。

六、总结

  • array_intersect 可以高效地找出多个数组的交集。

  • 判断交集是否为空,就能得出两个数组是否存在相同元素。

  • 在权限、推荐系统、内容过滤等实际业务中应用非常广泛。

通过合理利用 array_intersect,我们可以用极简的代码实现强大的逻辑判断,从而大大提升开发效率。

<span></span>