PHP 中 array_replace 和 array_merge 区别

PHP 5.3.0 新增了一个函数 array_replace,和 array_merge 作用很相似。

先看下面代码示例:

<?php

$base = array(
	'name' => 'Lily',
	'age' => 20,
	'No index value',
);

$replace = array(
	'name' => 'Lucy',
	'addres' => 'Hubei',
	'No index value in array $replace',
);

print_r(array_merge($base, $replace));
print_r(array_replace($base, $replace));

上面代码输出为:

Array
(
    [name] => Lucy
    [age] => 20
    [0] => No index value
    [addres] => Hubei
    [1] => No index value in array $replace
)
Array
(
    [name] => Lucy
    [age] => 20
    [0] => No index value in array $replace
    [addres] => Hubei
)

很明显,array_replace 和 array_merge 的区别表现在处理数字索引的数据时,array_merge 会认为是不同的索引,不会进行覆盖,而 array_replace 则进行了覆盖。实际上 array_replace 和数组的 + 法运算的处理比较类似,但是参数的顺序得调换一下位置,下面的代码输出一致:

<?php

/* .....  数组定义同上 */

print_r(array_replace($base, $replace));
print_r($replace + $base);

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注