php 按值(而不是引用)复制数组元素
2022-08-31 00:54:46
我有以下代码:
$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
我想由于$data的所有元素本身都是引用,因此修改$data['y']也会修改$data['x']。这不是我想要的。我希望$data['x']保持不变。有没有办法取消引用这里的元素,以便我可以按值复制元素?
谢谢。
更新: $this->x->getResults();返回一个对象数组。所以我可以做这样的事情:$data['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方法”错误。从阅读响应来看,我最好的选择似乎是迭代每个元素并克隆它(这就是我试图用该代码做的事情..)。
更新:刚刚解决了它!:在foreach循环中,我只需要将行更改为:
$data['y'][$key] = clone $row;
它的工作原理!感谢大家的帮助。