
php 提供多种方式来合并数组,其中 + 运算符(数组联合运算符)是一种常见但常被误解的方法。与字符串连接或数值加法不同,当应用于数组时,+ 运算符的主要作用是将右侧数组的元素“追加”到左侧数组,但有一个核心规则:对于在两个数组中都存在的键,左侧数组的元素将被保留,而右侧数组中具有相同键的元素将被忽略。 换句话说,左侧数组的键拥有更高的优先级。
根据 PHP 官方文档的描述:
数组联合运算符 + 返回右侧数组附加到左侧数组的结果;对于在两个数组中都存在的键,将使用左侧数组的元素,并忽略右侧数组中匹配的元素。
这意味着 + 运算符不会覆盖现有键的值,而是填充左侧数组中缺失的键。
为了更好地理解 + 运算符的工作原理,我们将通过不同类型的数组组合来演示其行为。
当两个关联数组使用 + 运算符合并时,如果右侧数组包含左侧数组中不存在的键,这些键及其对应的值将被添加到结果数组中。如果键已存在于左侧数组,则左侧数组的值保持不变。
立即学习“PHP免费学习笔记(深入)”;
$array1 = ["The" => "quick", "brown" => "fox"];
$array2 = ["jumps" => "over", "the" => "lazy dog"];
$combinedArray = $array1 + $array2;
print_r($combinedArray);
/* 输出:
Array
(
[The] => quick
[brown] => fox
[jumps] => over
[the] => lazy dog
)
*/在此示例中,$array2 中的所有键("jumps", "the")在 $array1 中均不存在,因此它们被成功添加到 $combinedArray 中。
当一个索引数组与一个关联数组合并时,索引数组的数值键保持不变。关联数组的键(无论是字符串还是数值)如果与索引数组的现有键不冲突,则会被添加。
$array1 = ["The", "quick", "brown", "fox"]; // 键为 0, 1, 2, 3
$array2 = ["jumps" => "over", "the" => "lazy dog"];
$combinedArray = $array1 + $array2;
print_r($combinedArray);
/* 输出:
Array
(
[0] => The
[1] => quick
[2] => brown
[3] => fox
[jumps] => over
[the] => lazy dog
)
*/$array1 的数值键 0、1、2、3 与 $array2 的字符串键 "jumps"、"the" 不冲突,因此 $array2 的元素被成功添加。
与上一个示例类似,关联数组的字符串键会优先保留。索引数组的元素会以其数值键的形式被添加,前提是这些数值键不与关联数组中已有的(无论是字符串还是数值)键冲突。
$array1 = ["The" => "quick", "brown" => "fox"];
$array2 = ["jumps", "over", "the", "lazy dog"]; // 键为 0, 1, 2, 3
$combinedArray = $array1 + $array2;
print_r($combinedArray);
/* 输出:
Array
(
[The] => quick
[brown] => fox
[0] => jumps
[1] => over
[2] => the
[3] => lazy dog
)
*/$array1 的字符串键 "The"、"brown" 与 $array2 的数值键 0、1、2、3 不冲突,因此 $array2 的元素被成功添加。
PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍
386
这是最容易引起混淆的场景。当两个索引数组使用 + 运算符合并时,由于 PHP 默认会为索引数组分配从 0 开始的数值键,因此两个数组很可能会拥有相同的键(0, 1, 2, ...)。根据 + 运算符的规则,左侧数组的键拥有优先级,这意味着右侧数组中所有与左侧数组键冲突的元素都将被忽略。
$array1 = ["The", "quick", "brown", "fox"]; // 键为 0, 1, 2, 3
$array2 = ["jumps", "over", "the", "lazy dog"]; // 键为 0, 1, 2, 3
$combinedArray = $array1 + $array2;
print_r($combinedArray);
/* 输出:
Array
(
[0] => The
[1] => quick
[2] => brown
[3] => fox
)
*/在这个例子中,$array1 和 $array2 都拥有键 0、1、2、3。由于 $array1 在左侧,它的所有元素都被保留。而 $array2 中的所有元素("jumps", "over", "the", "lazy dog")因为它们的键(0, 1, 2, 3)已存在于 $array1 中,所以被完全忽略。结果数组与 $array1 完全相同。
理解 + 运算符与 array_merge() 等其他数组合并函数的区别至关重要。
+ 运算符 (Array Union):
array_merge() 函数:
array_replace() 函数:
示例对比:
$arrA = [0 => 'a', 1 => 'b'];
$arrB = [0 => 'x', 2 => 'y'];
// 使用 + 运算符
$resultPlus = $arrA + $arrB;
// print_r($resultPlus);
/* 输出:
Array
(
[0] => a
[1] => b
[2] => y
)
*/
// 0 键冲突,arrA 的 'a' 保留;1 键 arrB 没有;2 键 arrA 没有,arrB 的 'y' 添加。
// 使用 array_merge()
$resultMerge = array_merge($arrA, $arrB);
// print_r($resultMerge);
/* 输出:
Array
(
[0] => a
[1] => b
[2] => x
[3] => y
)
*/
// 所有元素都被追加,数值键重新索引。PHP 的 + 运算符是一个强大的数组合并工具,但其行为模式(特别是左侧键优先和不重新索引数值键的特性)与 array_merge() 等函数截然不同。理解这些差异,尤其是在处理索引数组时,是编写健壮 PHP 代码的关键。在选择数组合并方法时,应根据具体需求仔细权衡,是需要保留现有键的值,还是需要覆盖或重新索引所有键。正确运用 + 运算符,可以在特定场景下提供简洁高效的解决方案。
以上就是PHP 数组合并:深入理解 + 运算符的行为与应用的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号