📜  php 查找两个数组之间的差异 - PHP (1)

📅  最后修改于: 2023-12-03 15:33:38.473000             🧑  作者: Mango

PHP 查找两个数组之间的差异

在 PHP 中,查找两个数组之间的差异是一个常见的问题。可能你需要找出在一个数组中出现但在另一个数组中没有出现的元素,或者需要找出在两个数组中出现但位置不同的元素。下面将介绍一些实现这些功能的方法。

比较数组并返回差异

PHP 的 array_diff 函数可以比较两个数组,并返回出现在第一个数组中但不出现在其他数组中的元素。

$array1 = array(1,2,3,4,5);
$array2 = array(2,4,6,8,10);
$diff = array_diff($array1, $array2);
print_r($diff);

运行结果:

Array
(
    [0] => 1
    [2] => 3
    [3] => 5
)
比较数组并返回相同的元素

PHP 的 array_intersect 函数可以比较两个数组,并返回出现在所有数组中的元素。

$array1 = array(1,2,3,4,5);
$array2 = array(2,4,6,8,10);
$intersect = array_intersect($array1, $array2);
print_r($intersect);

运行结果:

Array
(
    [1] => 2
    [3] => 4
)
比较多维数组并返回差异

如果你需要比较多维数组并返回差异,可以使用 PHP 的 array_udiff 函数。该函数允许你自定义比较函数。

下面的例子将比较两个二维数组并返回差异:

$array1 = array(
    array('id'=>1, 'name'=>'Tom', 'age'=>20),
    array('id'=>2, 'name'=>'John', 'age'=>22),
    array('id'=>3, 'name'=>'Mary', 'age'=>18),
);

$array2 = array(
    array('id'=>1, 'name'=>'Tom', 'age'=>20),
    array('id'=>2, 'name'=>'John', 'age'=>25),
    array('id'=>4, 'name'=>'Mike', 'age'=>30),
);

// 比较两个数组并返回差异
function compare_arrays($a, $b) {
    return $a['id'] - $b['id'];
}

$diff = array_udiff($array1, $array2, 'compare_arrays');
print_r($diff);

运行结果:

Array
(
    [1] => Array
        (
            [id] => 2
            [name] => John
            [age] => 22
        )

    [2] => Array
        (
            [id] => 3
            [name] => Mary
            [age] => 18
        )

)
比较两个数组并返回相同的元素

如果需要比较多维数组并返回相同的元素,可以使用 PHP 的 array_uintersect 函数。该函数也允许你自定义比 较函数。

下面的例子将比较两个二维数组并返回相同的元素:

$array1 = array(
    array('id'=>1, 'name'=>'Tom', 'age'=>20),
    array('id'=>2, 'name'=>'John', 'age'=>22),
    array('id'=>3, 'name'=>'Mary', 'age'=>18),
);

$array2 = array(
    array('id'=>1, 'name'=>'Tom', 'age'=>20),
    array('id'=>2, 'name'=>'John', 'age'=>25),
    array('id'=>4, 'name'=>'Mike', 'age'=>30),
);

// 比较两个数组并返回相同的元素
function compare_arrays($a, $b) {
    return $a['id'] - $b['id'];
}

$diff = array_uintersect($array1, $array2, 'compare_arrays');
print_r($diff);

运行结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Tom
            [age] => 20
        )

)

以上就是在 PHP 中查找两个数组之间的差异的几种方法。无论你需要比较的是一维数组还是多维数组,PHP 都提供了方便的函数来实现。