当前位置: 首页> 最新文章列表> 如何利用 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()!如果你在开发中遇到类似的问题,不妨试试这个函数,也许就能节省你大量的代码量。