<span><span><span class="hljs-meta"><?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">?></span></span><span>
<hr>
</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 :可選參數,更多需要參與比較的數組。
返回值:一個包含所有交集元素的新數組。
思路很簡單:
使用array_intersect取出兩個數組的交集。
如果結果數組不為空,就說明存在交集;反之,則不存在。
下面是一個簡單的示例,演示如何判斷兩個數組是否有交集:
<span><span><span class="hljs-meta"><?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>] => </span><span><span class="hljs-number">4</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>
可以看到,數組$array1和$array2的交集為[4, 5] ,因此返回的結果不為空。
在有些情況下,我們只關心是否存在交集,而不是具體的交集元素。這時可以簡化邏輯:
<span><span><span class="hljs-meta"><?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>
這樣就能更直觀地得到結果。
權限校驗<br> 用戶角色數組與系統權限數組取交集,若不為空則說明用戶具備訪問權限
標籤匹配<br> 用戶興趣標籤與內容標籤取交集,若存在則推薦相關內容
關鍵詞過濾<br> 用戶輸入的關鍵詞數組與敏感詞數組取交集,若有交集則提示或攔截
array_intersect可以高效地找出多個數組的交集。
判斷交集是否為空,就能得出兩個數組是否存在相同元素。
在權限、推薦系統、內容過濾等實際業務中應用非常廣泛。
通過合理利用array_intersect ,我們可以用極簡的代碼實現強大的邏輯判斷,從而大大提升開發效率。
<span></span>