我有以下代码:PHP复制阵列元件,而不是由参考
$data['x'] = $this->x->getResults();
$data['y'] = $data['x'];
//some code here to modify $data['y']
//this causes (undesirably) $data['x] to be modified as well
由于$所有元素我想数据本身的引用,修改$数据[“Y”]还修改$ data ['x'] ..这不是我想要的。我希望$ data ['x']保持不变。有没有什么方法可以在这里取消引用元素,以便我可以通过值复制元素?
谢谢。
更新:$ this-> x-> getResults();返回一个对象数组。所以,我就可以这样做:$数据[ 'X'] [0] - > date_create ...
更新: 克隆阵列我的最新尝试,看起来是这样的:
$data['x'] = $this->x->getResults();
$data['y'] = $data['y'];
foreach($data['x'] as $key=>$row) {
$data['y'][$key]->some_attr = clone $row->some_attr;
}
我在这里?我不断收到“在非对象上调用的__clone方法”错误。从阅读答复看来,我最好的选择是遍历每个元素并克隆它(这正是我试图用该代码做的事情)。
UPDATE:只要解决了它!:foreach循环里面我只需要行更改为:
$data['y'][$key] = clone $row;
和它的作品!感谢大家的帮助。
什么是`$ this-> x-> getResults()`返回?一个东西? – 2009-07-27 19:13:27
重要的是要知道`$ this-> x-> getResults()`返回什么...... – jason 2009-07-27 19:14:11
是的,我使用codeigniter,因此是对模型(x)的调用,它返回数据库查询的对象数组结果 – oym 2009-07-27 19:14:16