No puede asignar algo por referencia a menos que se hace referencia a algo que ya existe. Igualmente, no puedes copiar algo que no existe.
lo que este código:
$a = array(1,2,3);
... ni copias o referencias - sólo se crea una nueva matriz llena de valores, ya que los valores se especificaron literalmente.
Sin embargo, este código:
$x = 1;
$y = 2;
$z = 3;
$a = array($x,$y,$z);
... copia los valores de $x
, $y
y $z
en una matriz . Las variables utilizadas para inicializar los valores de la matriz todavía existen por derecho propio, y se pueden modificar o destruir sin afectar los valores en la matriz.
este código:
$x = 1;
$y = 2;
$z = 3;
$a = array(&$x,&$y,&$z);
... crea una matriz de referencias a $x
, $y
y $z
(nótese la &
). Si, después de ejecutar este código, modifico $x
- digamos que le doy un valor de 4 - también modificará el primer valor en la matriz. Entonces, cuando use la matriz, $a[0]
ahora contendrá 4
.
Consulte this section del manual para obtener más información sobre cómo funciona la referencia en PHP.
Dependiendo de los tipos y los valores de las variables utilizadas como los miembros de la matriz, la operación de copia puede no ocurrir en el momento de la asignación aún cuando son asignados por valor. Internamente PHP utiliza copy-on-write en tantas situaciones como sea posible por razones de rendimiento y eficiencia de la memoria. Sin embargo, en términos del comportamiento en el contexto de su código, puede tratarlo como una simple copia.
simplemente que desean saber si es posible asignar una nueva matriz, ¿referencia? ¿O quieres saber si hay alguna forma de configurarlo para hacerlo automáticamente? – jprofitt
Quiero saber, que a veces el motor de PHp puede pasar $ a = array (1,2,3); $ b = $ a; por referencia sin el signo '&'. – RusAlex