📜  如何合并数组并保留PHP的键?(1)

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

如何合并数组并保留PHP的键?

在PHP中,我们经常需要将两个数组合并成一个数组。但是,当合并数组时,有时需要保留原始数组的键。这就需要使用PHP中的一些函数来合并数组,并保持原始键。

array_merge函数

PHP中,最常用的合并数组函数是array_merge()。此函数将两个或更多数组合并为一个数组,并返回该数组。但是,当使用此函数时,原始数组的键将被重建并通过数字索引来引用它们的元素。

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('d' => 4, 'e' => 5, 'f' => 6);

$result = array_merge($array1, $array2);

print_r($result);

/* 输出:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)
*/

如上所示,当array_merge()合并数组时,原始数组的键被丢失,并被重新分配了数字索引。

array_replace函数

如果要保留原始数组的键,可以使用array_replace()函数。此函数将一个数组替换为另一个数组,并返回该替换后的数组。此函数将保留原始数组的键,并用新的数组值覆盖原始数组中的值。

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('b' => 4, 'c' => 5, 'd' => 6);

$result = array_replace($array1, $array2);

print_r($result);

/* 输出:
Array
(
    [a] => 1
    [b] => 4
    [c] => 5
    [d] => 6
)
*/

如上所示,使用array_replace()函数合并数组时,原始数组的键被保留,并用新数组中的值替换原始数组中的值。

array_merge_recursive函数

array_merge_recursive()函数也可以用于合并数组,并保留原始数组的键。此函数将在深度上递归地合并两个或更多数组,并返回新的数组。此函数将保留原始数组的键,并将它们的值合并成多维数组。

$array1 = array('color' => array('favorite' => 'red'), 5);
$array2 = array(10, 'color' => array('favorite' => 'green', 'blue'));

$result = array_merge_recursive($array1, $array2);

print_r($result);

/* 输出:
Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)
*/

如上所示,使用array_merge_recursive()函数合并数组时,原始数组的键被保留,并合并成多维数组。

结论

在PHP中,有多种方法可以合并数组并保留原始数组的键。使用array_merge()函数,可以将两个或更多数组合并成一个数组,并重建键。使用array_replace()函数,可以合并并保留原始数组的键。如果需要递归地合并多个数组,并将原始键保留为多维数组,则可以使用array_merge_recursive()函数。