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
Я полагаю, поскольку все элементы $ data сами являются ссылками, изменение $ data ['y' '] также изменяет $ data [' x & apos;] .., что НЕ то, что я хочу. Я хочу, чтобы $ data ['x' 'остался прежним. Есть ли способ разыменовать элементы здесь, чтобы я мог скопировать элементы по значению?
Благодарю.
Обновление: $ this- & gt; x-> getResults (); возвращает массив объектов. Таким образом, я могу сделать что-то вроде: $ data [& amp; x & amp;] [0] - & gt; date_create ...
Update: my latest attempt to clone the array looks something like this:
$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", вызываемый для необъекта & quot; ошибка. Из чтения ответов кажется, что мой лучший вариант - перебирать каждый элемент и клонировать его (что я и пытался сделать с этим кодом ...).
UPDATE: Просто решил !: внутри цикла foreach Мне просто нужно было изменить строку на:
$data['y'][$key] = clone $row;
И это работает! Спасибо всем за помощь.