将PHP添加到数组中的命令相同吗?

4

只是好奇这样做是否可行

$this->item['foo'] = $this->action(3);
$this->item['bar'] = $this->action(1);
$this->item['baz'] = $this->action(1);

与做

相同。
$this->item = ($this->item +
[
    'foo'  => $this->action(3),
    'bar'  => $this->action(1),
    'baz'  => $this->action(1),
]);

如果您能解释原因/为什么不能,我会非常感激。

2
是的,它是有效的 PHP 5.4+ 处理数组的代码...针对那些给出负评和恶意评论的人...然后又迅速撤回并删除了,哈哈。 - ehime
1
5.4版本的新特性:数组的短语法 - bishop
@bishop,你知道这个,加1分给你 ;) - ehime
1
今天学到了新东西。 - ka_lin
1
@KA_lin 请记住,这仅适用于 PHP 版本 5.4 及以上的版本 ;) - ehime
1个回答

8
如果 $this->item 已经具有您指定的任何键,则它们不等效。来自文档的说明如下:

对于两个数组中都存在的键,将使用左侧数组中的元素,并忽略右侧数组中的匹配元素。

您可以通过交换参数的顺序来解决此问题:
$this->item = (
    [
    'foo'  => $this->action(3),
    'bar'  => $this->action(1),
    'baz'  => $this->action(1),
    ] + $this->item);

谢谢Barmar,我本以为会有一个排序的问题,但不确定。再次感谢您确认了这一点,加1并等待接受。 - ehime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接