【问题标题】:Remove object reference from array of objects in PHP从 PHP 中的对象数组中删除对象引用
【发布时间】:2016-02-17 11:49:34
【问题描述】:

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

$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"

如何删除对对象的引用?

【问题讨论】:

  • 错字$this-ContentArray[0]->text = "edit text"; 必须是$this->ContentArray[0]->text = "edit text";

标签: php reference


【解决方案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 的解决方案。

【讨论】:

    【解决方案2】:

    你打错了:$this-ContentArray[0]->text = "edit text";

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

    编辑 你试过把'$'放在newArray之前吗?

    编辑 2

    似乎 PHP 中的对象总是通过引用传递,即使您也是如此。你可能想看看这个线程: Passed by reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2016-10-28
      • 2015-07-22
      • 2014-08-24
      相关资源
      最近更新 更多