我有以下代碼: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