在PHP中,数组按值分配。因此,当我做这样的事情时:
$a = ['a' => 'ape'];
$b = $a;
$a['b'] = 'banana';
只有$ a的密钥为'b',但$ b不会被修改。当通过引用将一个数组分配给一个函数并且该函数修改数组时,这也适用。
但是,如果我尝试使用PECL MongoDB扩展插入文档,则会发生奇怪的事情。在下面的单元测试中,第二个断言对我来说失败了:
public function testUpdateGeneratesId()
{
$doc1 = ['author' => 'j.henning', 'title' => 'My Blog Entry'];
$doc2 = $doc1;
$this->blog->insert($doc1, ['w' => 1]);
$this->assertNotNull($doc1['_id']);
$this->assertArrayNotHasKey('_id', $doc2);
}
#insert()在插入的文档上生成键'_id',但我希望该键只能添加到$ doc1。但是,它是在两个阵列上创建的。
有人可以重现这种行为或给出任何解释吗?
答案 0 :(得分:0)
这听起来像是与https://jira.mongodb.org/browse/PHP-410相关的错误 - 您可以在https://jira.mongodb.org/browse/PHP为此提交一个新错误吗?