php copiando elementos de matriz por valor, no por referencia
Tengo el siguiente 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
Supongo que, dado que todos los elementos de $ data son referencias, la modificación de $ data ['y'] también modifica $ data ['x'] .. que NO es lo que quiero. Quiero que $ data ['x'] permanezca igual. ¿Hay alguna forma de desreferenciar los elementos aquí para que pueda copiar los elementos por valor?
Gracias.
Actualización: $ this-> x-> getResults (); devuelve una matriz de objetos. Entonces puedo hacer algo como: $ data ['x'] [0] -> date_create ...
Actualizar: mi último intento de clonar la matriz se ve algo así:
$data['x'] = $this->x->getResults();
$data['y'] = $data['y'];
foreach($data['x'] as $key=>$row) {
$data['y'][$key]->some_attr = clone $row->some_attr;
}
¿Estoy lejos de aquí? Sigo recibiendo un error "__clone method llamado on non-object". Al leer las respuestas, parece que mi mejor opción es iterar sobre cada elemento y clonarlo (que es lo que estaba tratando de hacer con ese código ...).
ACTUALIZAR: ¡Solo lo resolví !: dentro del bucle foreach solo necesitaba cambiar la línea a:
$data['y'][$key] = clone $row;
¡Y funciona! Gracias a todos por la ayuda.