start - undefined variable php solucion
PHP Pase por error de referencia después de usar la misma var (3)
Después de que se ejecuta este ciclo:
foreach ($x as $n => &$v) { }
$v
termina como una referencia a $x[2]
. Lo que asigna a $v
realidad se asigna $x[2]
. Entonces en cada iteración del segundo ciclo:
foreach ($y as $n => $v) { }
$v
(o debería decir $x[2]
) se convierte en:
-
''bye bye''
-
''world''
-
''harsh''
Eche un vistazo a este código y ayúdeme a entender el resultado
$x = array(''hello'', ''beautiful'', ''world'');
$y = array(''bye bye'',''world'', ''harsh'');
foreach ($x as $n => &$v) { }
$v = "DONT CHANGE!";
foreach ($y as $n => $v){ }
print_r($x);
die;
Imprime:
Array
(
[0] => hello
[1] => beautiful
[2] => harsh
)
¿Por qué cambia el ÚLTIMO elemento de $ x? simplemente no sigue ninguna lógica!
// ...
$v = "DONT CHANGE!";
unset($v);
// ...
porque $v
sigue siendo una referencia, que luego toma el último elemento en el último bucle foreach.
EDITAR: Ver la referencia donde se lee (en un bloque de código)
unset($value); // break the reference with the last element
Los bucles de Foreach no son funciones. Una y comercial (&) en foreach no funciona para preservar los valores como en las funciones. Entonces, incluso si tiene $ var en el segundo foreach (), no espere que sea como un "fantasma" fuera del ciclo.