Array
(
[0] => one // preserved from $array1 (left-hand array)
[1] => two // preserved from $array1 (left-hand array)
[foo] => bar // preserved from $array1 (left-hand array)
[2] => five // added from $array2 (right-hand array)
)
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[foo] => baz // overwritten from $array2
[2] => three // appended from $array2
[3] => four // appended from $array2
[4] => five // appended from $array2
)
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[foo] => bar // preserved from $array1
[2] => five // added from $array2
)
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[2] => five // added from $array2
[foo] => bar // preserved from $array1
)
// we could do it like this
function foo(array $options)
{
$defaults = ['foo' => 'bar'];
$options = array_replace($defaults, $options);
// ...
}
// but + here might be way better:
function foo(array $options)
{
$options += ['foo' => 'bar'];
// ...
}
9条答案
按热度按时间eufgjt7s1#
引用PHP Manual on Language Operators
运算符返回追加到左侧数组的右侧数组;对于存在于两个数组中的关键字,将使用左侧数组中的元素,而忽略右侧数组中的匹配元素。
所以如果你这么做了
你会得到
因此
+
的逻辑等效于以下代码片段:如果您对C级实现的详细信息感兴趣,请访问
注意,
+
与array_merge()
组合数组的方式不同:会给你
更多示例请参见链接页面。
ev7lccsx2#
我发现使用它的最好例子是在配置数组中。
$default_vars
是默认值的数组,$user_vars
数组将覆盖$default_vars
中定义的值,$user_vars
中的任何缺失值现在都是$default_vars
的默认变量。这将
print_r
表示为:希望这能有所帮助!
2izufjch3#
此运算符取两个数组的并集(与array_merge相同,不同之处在于使用array_merge会覆盖重复的键)。
数组运算符的文档可在here中找到。
t3psigkw4#
小心使用数字键,如果它们应该被保留或者如果你不想失去任何东西
联合
合并
fruv7luv5#
+
运算符生成的结果与array_replace()相同。但是,由于运算符参数相反,因此生成的数组的顺序也可能不同。展开本页中的另一个示例:
产出:
jljoyd4f6#
1.数组加操作将所有数组视为关联数组。
1.当加号期间发生键冲突时,将保留左(前)值
我张贴下面的代码,使事情清楚.
第一个月
iq3niunx7#
来自https://softonsofa.com/php-array_merge-vs-array_replace-vs-plus-aka-union/ x1c 0d1x
也就是说,我们可以认为+操作符有点多余,因为array_replace函数也可以实现同样的效果。
但是,也有情况下,它派上用场:假设你有一个$options数组被传递给一个函数/方法,并且还有一些默认值可以作为后备:
siv3szwd8#
它会将新数组追加到以前的数组中。
jfgube3f9#
数组([0] =〉示例[1] =〉测试)