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);