當前位置: 首頁> 最新文章列表> 如何用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. 權限校驗<br> 用戶角色數組與系統權限數組取交集,若不為空則說明用戶具備訪問權限

  2. 標籤匹配<br> 用戶興趣標籤與內容標籤取交集,若存在則推薦相關內容

  3. 關鍵詞過濾<br> 用戶輸入的關鍵詞數組與敏感詞數組取交集,若有交集則提示或攔截

六、總結

  • array_intersect可以高效地找出多個數組的交集。

  • 判斷交集是否為空,就能得出兩個數組是否存在相同元素。

  • 在權限、推薦系統、內容過濾等實際業務中應用非常廣泛。

通過合理利用array_intersect ,我們可以用極簡的代碼實現強大的邏輯判斷,從而大大提升開發效率。

 <span></span>