php copiando elementos da matriz por valor, não por referência
Eu tenho o seguinte código:
$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
Eu acho que já que todos os elementos de $ data são referências, modificar $ data ['y'] também modifica $ data ['x'] .. que NÃO é o que eu quero. Eu quero que $ data ['x'] permaneça o mesmo. Existe alguma maneira de desreferenciar os elementos aqui para que eu possa copiar os elementos por valor?
Obrigado.
Atualização: $ this-> x-> getResults (); retorna uma matriz de objetos. Então eu posso fazer algo como: $ data ['x'] [0] -> date_create ...
Atualizar: minha última tentativa de clonar o array é algo como isto:
$data['x'] = $this->x->getResults();
$data['y'] = $data['y'];
foreach($data['x'] as $key=>$row) {
$data['y'][$key]->some_attr = clone $row->some_attr;
}
Eu estou fora daqui? Eu continuo recebendo o erro "__clone method called on non-object". A partir da leitura das respostas parece que a minha melhor opção é fazer uma iteração sobre cada elemento e cloná-lo (que é o que eu estava tentando fazer com esse código ..).
ATUALIZAR: Só resolvi isso !: dentro do loop foreach eu só precisava mudar a linha para:
$data['y'][$key] = clone $row;
E isso funciona! Obrigado a todos pela ajuda.