📜  php 数组合并跳过重复 - PHP (1)

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

PHP 数组合并跳过重复

在PHP中,我们有时需要合并两个或多个数组来得到一个大数组。但是,在合并时有可能出现重复的键或值,这些重复的元素我们可能不需要。本文将介绍如何使用PHP中的一些函数来合并数组并跳过重复的元素。

使用 array_merge()

PHP中内置的 array_merge() 函数可以将两个或多个数组合并为一个大数组。但是,如果数组中有重复的键值,那么在合并时会保留重复的值,并将之前的值覆盖掉。

$array1 = array("a" => "red", "b" => "green", "c" => "blue");
$array2 = array("b" => "yellow", "c" => "purple");
$result = array_merge($array1, $array2);
print_r($result);

这段代码会输出以下结果:

Array
(
    [a] => red
    [b] => yellow
    [c] => purple
)

我们可以看到,数组 $array2 中的 "b" 和 "c" 与数组 $array1 中的 "b" 和 "c" 重复了。在合并后,重复的键值被覆盖了。

使用 array_replace()

与 array_merge() 不同的是,PHP中还有一个函数 array_replace() 可以用于合并数组并保留重复键值。在合并时,如果有重复的键值,会用后面的数组中的值覆盖掉前面数组中的值。

$array1 = array("a" => "red", "b" => "green", "c" => "blue");
$array2 = array("b" => "yellow", "c" => "purple");
$result = array_replace($array1, $array2);
print_r($result);

这段代码会输出以下结果:

Array
(
    [a] => red
    [b] => yellow
    [c] => purple
)

我们可以看到,数组 $array2 中的 "b" 和 "c" 与数组 $array1 中的 "b" 和 "c" 重复了。在合并后,重复的键值被数组 $array2 中的值覆盖了。

合并并跳过重复元素

在某些情况下,我们需要合并数组并且跳过重复的元素。PHP中可以通过多种方式实现。

1. array_unique()

如果我们先将要合并的所有数组通过 array_merge() 合并成一个大数组,然后再使用 array_unique() 函数,就可以得到一个去掉重复元素的数组了。

$array1 = array("a" => "red", "b" => "green", "c" => "blue");
$array2 = array("b" => "yellow", "c" => "purple");
$result = array_merge($array1, $array2);
$result = array_unique($result);
print_r($result);

这段代码会输出以下结果:

Array
(
    [a] => red
    [b] => green
    [c] => blue
    [1] => yellow
    [2] => purple
)

我们可以看到,数组中的重复元素已经被去掉了。

2. 循环判断重复元素

我们可以使用一个循环来遍历要合并的数组,并通过 in_array() 函数来判断当前元素是否已经存在于结果数组中。如果不存在,就将当前元素加入结果数组。

$array1 = array("a" => "red", "b" => "green", "c" => "blue");
$array2 = array("b" => "yellow", "c" => "purple");
$result = $array1;
foreach ($array2 as $key => $value) {
    if (!in_array($value, $result)) {
        $result[$key] = $value;
    }
}
print_r($result);

这段代码会输出以下结果:

Array
(
    [a] => red
    [b] => green
    [c] => blue
    [1] => yellow
    [2] => purple
)

我们可以看到,数组中的重复元素已经被去掉了。

结论

在PHP中,我们可以使用 array_merge() 或 array_replace() 函数来合并数组。如果需要去掉重复元素,可以通过 array_unique() 函数或循环判断重复元素的方式实现。