*RECURSION* e loop
Eu estava querendo entender por que toda vez que dava um print_r() na variável $GLOBALS aparecia um trecho que tinha "RECURSION".
Daí fui testando pra ver se conseguiria reproduzir algo semelhante, e saiu isso aqui:
$G = array(1,2,3);
$G[] =& $G;
print_r($G);
/**
imprime:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => ArrayRECURSION
)
)
- Alguém sabe explicar o que seria esse RECURSION?
E também tenho outra dúvida.
Quando vamos percorrer esse mesmo array, dá pau:
array_walk_recursive($G, function(&$val, $key){
var_dump($val);
});
//Warning: array_walk_recursive(): recursion detected on line 13
foreach($G as $G){
var_dump($G);
}
//Invalid argument supplied for foreach() in ...
isso também (a parada do foreach ) eu também queria entender, pois já vi alguns códigos em tutoriais em que a variável que recebe o valor a cada iteração com o array (como no caso 2 do meu exemplo) é a mesma variável do array. No caso, $G e $G.
- O que o php faz com essa variável ali?
- Se tentássemos fazer algo no While, daria um NOTICE falando que o array não existe( ou seja, no while o valor é substituído imediatamente), por que no foreach é só depois do último elemento do array que a variável vira o último elemento (e não na primeira iteração como o while)?
Discussão (6)
Carregando comentários...