如何理解php中使用加号合并数组的规则?同名键不合并
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
对,没看错。是加号,是php
。是php
里面的加号操作。其它高级编程语言里面非常常见的加号操作,在php
里面换成了点符号。但是,本文却描述的是php
里面的加号,应用到数组身上的话,是数组合并的意思么?和array_replace()
和array_merge()
有什么样的区别和联系呢?这就是本文要讨论的问题。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程故事。测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。
前文回顾
主要回顾php
的array_merge()
和array_replace()
的使用方法:
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] => 叔 )
print_r($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] => 南 )
print_r($a + $b); // Array ( [0] => 苏 [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] => 南 )
print_r($a + $b); // Array ( [a] => 苏 [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 )
print_r($a + $b); // Array ( [0] => 苏 [b] => 南 )
表格总结
键 | array_merge() | array_replace() | + |
---|---|---|---|
数字键相同 | 不覆盖,顺序叠加 | 覆盖 | 不覆盖,只叠加不同的 |
非数字键相同 | 覆盖 | 覆盖 | 不覆盖,只叠加不同的 |
可见,结论是:php
下的数组使用+
号的时候,即不等同于merge()
,也不等同于replace()
。
结语
苏南大叔的php
经验文章链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。