variable start solucion session_start pasar paginas indice indefinido entre ejemplos ejemplo definido php reference

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.