PHP中使用+运算符合并数组时索引数组场景失效问题咨询
问题原因
PHP 中数组的+运算符的合并规则是按键名取并集,遇到相同键名时,永远保留左侧数组的元素,右侧数组同键名的元素直接丢弃,这个规则对关联数组和索引数组统一生效,不存在差异化处理。
你遇到的索引数组合并失效的情况,本质是两个索引数组的键名完全重合:
- 示例里的
$array1是索引数组,默认键为0、1、2、3 $array2同样是索引数组,默认键也是0、1、2、3
用+合并时,右侧数组所有键都和左侧重复,因此所有元素都被丢弃,最终结果只保留了$array1的内容。
前面三个场景能得到符合预期的合并结果,核心是两个数组的键名没有完全重叠:
- 关联数组之间合并:两个数组的字符串键互不重复,所有元素都能保留
- 关联数组和索引数组合并:一类用字符串键、一类用数字键,没有重复的键名,自然所有元素都被保留
如果需要合并两个索引数组且保留全部元素,应该使用array_merge()函数,该函数处理索引数组时会自动为右侧数组的元素重新生成递增的数字键,不会丢弃元素:
$array1 = ["The", "quick", "brown", "fox"]; $array2 = ["jumps", "over", "the", "lazy dog"]; $combinedArray = array_merge($array1, $array2); /* 输出结果: Array ( [0] => The [1] => quick [2] => brown [3] => fox [4] => jumps [5] => over [6] => the [7] => lazy dog ) */
内容的提问来源于stack exchange,提问作者Rounin
相关产品推荐
相关产品推荐

