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


Remove object reference from array of objects in PHP

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

$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 中的对象总是通过引用传递,即使您也是如此。您可能想查看此线程:通过引用传递