php通过值而不是引用复制数组元素
- 论坛
- php通过值而不是引用复制数组元素
14 浏览
php通过值而不是引用复制数组元素
我有以下代码:
$data['x'] = $this->x->getResults(); $data['y'] = $data['x']; // 在这里修改$data['y']的一些代码 // 这会导致(不希望的是)$data['x']也被修改
我猜想,因为$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;
然后它就起作用了!感谢大家的帮助。