使用“+”合并两个数组(数组联合运算符)它是如何工作的?
我有一些代码似乎使用 +=
合并两个数组中的数据,但它不包含元素中的所有元素。它是如何运作的?
示例:
$test = array('hi');
$test += array('test', 'oh');
var_dump($test);
输出:
array(2) {
[0]=>
string(2) "hi"
[1]=>
string(2) "oh"
}
在 PHP 中的数组上使用 +
意味着什么?
I have some code that appears to merge the data from two arrays using +=
, but it doesn't include all of the elements in the element. How does it work?
Example:
$test = array('hi');
$test += array('test', 'oh');
var_dump($test);
Output:
array(2) {
[0]=>
string(2) "hi"
[1]=>
string(2) "oh"
}
What does +
mean when used on arrays in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
引自 PHP 语言运算符手册
因此,如果您这样做,
您将得到
所以
+
的逻辑相当于以下代码片段:如果您对 C 级实现的详细信息感兴趣,请前往
注意,
+
与array_merge()
的方式不同组合数组:会给你
查看链接页面以获取更多示例。
Quoting from the PHP Manual on Language Operators
So if you do
You will get
So the logic of
+
is equivalent to the following snippet:If you are interested in the details of the C-level implementation head to
Note, that
+
is different from howarray_merge()
would combine the arrays:would give you
See linked pages for more examples.
我发现使用它的最好例子是在配置数组中。
正如它所暗示的,$default_vars 是默认值的数组。
$user_vars
数组将覆盖$default_vars
中定义的值。$user_vars
中的任何缺失值现在都是$default_vars
中的默认变量。这将
print_r
为:我希望这有帮助!
The best example I found for using this is in a config array.
The
$default_vars
, as it suggests, is the array for default values.The
$user_vars
array will overwrite the values defined in$default_vars
.Any missing values in
$user_vars
are now the defaults vars from$default_vars
.This would
print_r
as:I hope this helps!
该运算符采用两个数组的并集(与 array_merge 相同,但使用 array_merge 会覆盖重复键)。
数组运算符的文档位于此处。
This operator takes the union of two arrays (same as array_merge, except that with array_merge duplicate keys are overwritten).
The documentation for array operators is found here.
如果应该保留数字键或者您不想丢失任何联合合并的内容,请小心使用
数字
键
Carefull with numeric keys, if they should be preserved or if you don't want to loose anything
union
merge
+
运算符产生与 array_replace()< 相同的结果/a>.但是,由于运算符参数是相反的,因此结果数组的顺序也可能不同。扩展本页的另一个示例:
输出:
The
+
operator produces the same results as array_replace(). However since the operator arguments are reversed, the ordering of the resulting array may also be different.Expanding on another example from this page:
outputs:
来自 https://softonsofa.com/php-array_merge- vs-array_replace-vs-plus-aka-union/
From https://softonsofa.com/php-array_merge-vs-array_replace-vs-plus-aka-union/
我发布下面的代码以使事情变得清楚。
$a + $b = array_plus($a, $b)
I post the code below to make things clear.
$a + $b = array_plus($a, $b)
它将把新数组追加到前一个数组中。
It will append the new array to the previous.
数组([0] => 示例 [1] => 测试)
Array ( [0] => example [1] => test )