我试图将对象数组复制到新数组中。但是对数组中对象的引用保持不变。我的代码:
$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"
如何删除对象的引用?
答案 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