从PHP中的对象数组中删除对象引用

时间:2016-02-17 11:49:35

标签: php reference

我试图将对象数组复制到新数组中。但是对数组中对象的引用保持不变。我的代码:

$newArray = $this->ContentArray;
var_dump(newArray[0]->text); //print "text"
var_dump($this->ContentArray[0]->text); //print "text"
$this->ContentArray[0]->text = "edit text"; 
var_dump(newArray[0]->text); //print edit text"

如何删除对象的引用?

2 个答案:

答案 0 :(得分:1)

您可以明确克隆每个数组元素:

$newArray = array_map(
    function ($element) { return clone $element; },
    $this->ContentArray
);
array_merge($this->ContentArray,$newArray);

var_dump(newArray[0]->text);
var_dump($this->ContentArray[0]->text);
$this->ContentArray[0]->text = "edit text"; 
var_dump(newArray[0]->text); 

但我更喜欢Praveen Kumar的解决方案。

答案 1 :(得分:0)

你有一个拼写错误:$this-ContentArray[0]->text = "edit text";

应为$this->ContentArray[0]->text = "edit text";

修改 你已经尝试过把'' $'在newArray之前?

编辑2

似乎PHP中的对象总是通过引用传递,即使你是。您可能想要查看此主题: Passed by reference