如何理解php的array_replace()函数?replace和merge的区别
发布于 作者:苏南大叔 来源:程序如此灵动~
在上一篇的php
的数组合并的文章里面,可以看到array_merge()
对于不同类型的键值,有着不同的对待标准。数字类型的不覆盖,顺序重排。字母类型的直接覆盖。而本文中,array_replace()
则没有上述规则,只要是重复的键,就覆盖。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的程序经验文章。测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。
前文回顾
主要回顾php
的array_merge()
的使用方法:
array_merge()
的同名键合并的时候,会根据键是数字还是字符串,做出不同的处理,或覆盖或追加。而本文中的的例子,也比较好理解。array_replace()
的同键值处理,都是覆盖!没有例外。
可以处理多个数组
$a = ["苏"];
$b = ["南"];
$c = ["大","叔"];
print_r(array_merge($a,$b,$c)); // Array ( [0] => 苏 [1] => 南 [2] => 大 [3] => 叔 )
print_r(array_replace($a,$b,$c)); // Array ( [0] => 大 [1] => 叔 )
数字索引覆盖
$a = array(0 => "苏", 1 => "南");
$b = array(0 => "su");
print_r(array_merge($a,$b)); // Array ( [0] => 苏 [1] => 南 [2] => su )
print_r(array_replace($a,$b)); // Array ( [0] => su [1] => 南 )
非数字索引覆盖
$a = array("a" => "苏", "b" => "南");
$b = array("a" => "su");
print_r(array_merge($a,$b)); // Array ( [a] => su [b] => 南 )
print_r(array_replace($a,$b)); // Array ( [a] => su [b] => 南 )
混合索引覆盖
$a = array("0" => "苏", "b" => "南");
$b = array("b" => "su", 0 => "nan", "0" => "大叔");
print_r(array_merge($a,$b)); // Array ( [0] => 苏 [b] => su [1] => 大叔 )
print_r(array_replace($a,$b)); // Array ( [0] => 大叔 [b] => su )
结语
苏南大叔的php
经验文章链接:


