插件窝 干货文章 php如何查找出两个数组的不同值

php如何查找出两个数组的不同值

array 数组 diff 比较 210    来源:    2025-03-19

在PHP中,你可以使用多种方法来查找两个数组的不同值。以下是几种常见的方法:

方法1:使用 array_diff() 函数

array_diff() 函数用于比较两个或多个数组,并返回第一个数组中存在但其他数组中不存在的值。

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];

$diff = array_diff($array1, $array2);

print_r($diff);

输出:

Array
(
    [0] => 1
    [1] => 2
)

方法2:使用 array_diff_assoc() 函数

array_diff_assoc() 函数不仅比较值,还比较键。它返回第一个数组中存在但其他数组中不存在的键值对。

$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['a' => 1, 'b' => 4, 'c' => 3];

$diff = array_diff_assoc($array1, $array2);

print_r($diff);

输出:

Array
(
    [b] => 2
)

方法3:使用 array_udiff() 函数

array_udiff() 函数允许你使用自定义的回调函数来比较数组中的值。

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];

$diff = array_udiff($array1, $array2, function($a, $b) {
    return $a <=> $b;
});

print_r($diff);

输出:

Array
(
    [0] => 1
    [1] => 2
)

方法4:使用 array_diff_key() 函数

array_diff_key() 函数用于比较两个数组的键,并返回第一个数组中存在但其他数组中不存在的键。

$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['a' => 1, 'd' => 4, 'c' => 3];

$diff = array_diff_key($array1, $array2);

print_r($diff);

输出:

Array
(
    [b] => 2
)

方法5:手动比较

你也可以手动遍历数组来查找不同值。

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];

$diff = [];
foreach ($array1 as $value) {
    if (!in_array($value, $array2)) {
        $diff[] = $value;
    }
}

print_r($diff);

输出:

Array
(
    [0] => 1
    [1] => 2
)

总结

  • array_diff() 是最常用的方法,适用于简单的值比较。
  • array_diff_assoc() 适用于需要同时比较键和值的情况。
  • array_udiff() 适用于需要自定义比较逻辑的情况。
  • array_diff_key() 适用于只比较键的情况。
  • 手动比较适用于需要更复杂逻辑的情况。

根据你的具体需求选择合适的方法。