>我试图将对象数组复制到新数组。 但是对数组中对象的引用保持不变。 我的代码 :
$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"
如何删除对对象的引用?
您可以显式克隆每个数组元素:
$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的解决方案。
你有一个错别字:$this-ContentArray[0]->text = "edit text";
应该$this->ContentArray[0]->text = "edit text";
编辑您是否尝试在 newArray 之前放置"$"?
编辑 2
似乎 PHP 中的对象总是通过引用传递,即使您也是如此。您可能想查看此线程:通过引用传递