當前位置: 首頁> 最新文章列表> 如何利用PHP 的array_diff() 函數找出數組中獨有的元素?

如何利用PHP 的array_diff() 函數找出數組中獨有的元素?

M66 2025-06-24

在開發過程中,我們經常會遇到需要比較兩個或多個數組的情況,特別是找出某個數組中獨有的元素。 PHP 提供了一個非常實用的內建函數—— array_diff() ,可以輕鬆完成這一任務。

一、array_diff() 是什麼?

array_diff()是PHP 中用於比較數組差異的函數。它會返回一個數組,該數組包含了只出現在第一個數組中的元素,而不會返回存在於後面數組中的任何值。

函數原型:

 array array_diff(array $array1, array ...$arrays)
  • $array1是你要比較的主數組。

  • $arrays是你要和主數組進行比較的一個或多個數組。

二、使用示例

例子1:找出用戶新增的興趣愛好

假設我們記錄了用戶原有的興趣,以及用戶提交的新興趣列表,想要知道哪些是新增的

 <?php
$originalInterests = ['音樂', '電影', '旅行'];
$newInterests = ['音樂', '電影', '旅行', '攝影', '閱讀'];

$addedInterests = array_diff($newInterests, $originalInterests);

print_r($addedInterests);
?>

輸出:

 Array
(
    [3] => 攝影
    [4] => 閱讀
)

可以看到, array_diff()返回了只出現在$newInterests中的元素,也就是用戶新增的興趣。

三、結合URL 示例

假設你在處理一個用戶提交的網站列表時,想要過濾掉用戶已經提交過的網址,只留下新的。

 <?php
$existingUrls = [
    'https://m66.net/article/123',
    'https://m66.net/blog/2024',
];

$submittedUrls = [
    'https://m66.net/article/123',
    'https://m66.net/tools/checker',
    'https://m66.net/blog/2024',
    'https://m66.net/contact',
];

$newUrls = array_diff($submittedUrls, $existingUrls);

print_r($newUrls);
?>

輸出:

 Array
(
    [1] => https://m66.net/tools/checker
    [3] => https://m66.net/contact
)

結果表明,用戶提交的這兩個網址是新的,沒有在原始列表中出現過。

四、注意事項

  • array_diff()通過值進行比較的,而且是使用非嚴格模式(不比較數據類型),比如'1'1被認為是相同的。

  • 如果需要使用嚴格比較(也就是連數據類型都要比較),可以使用array_diff_assoc()array_diff_key()

  • 返回結果保持了原數組中的鍵名,如果你不需要鍵名,可以用array_values()重新索引。

 $cleanList = array_values(array_diff($newUrls, $existingUrls));

五、總結

array_diff()是一個非常強大的工具,適用於數據篩選、日誌對比、用戶行為分析等多種場景。只要理解了它的工作方式,很多數組處理的邏輯都能變得簡單而高效。

希望這篇文章能幫助你更好地理解並使用array_diff() !如果你在開發中遇到類似的問題,不妨試試這個函數,也許就能節省你大量的代碼量。