* En realidad se me colaron un par más
Aquí va mi tiro.
Código PHP:
<?php
function definido() {
global $foo, $GLOBALS;
return isset($GLOBALS['GLOBALS']['foo']['tercera']) ?
"\$foo['tercera'] está definido: {$GLOBALS['GLOBALS']['foo']['tercera']}" :
"\$foo['tercera'] NO está definido";
}
$GLOBALS['GLOBALS']['foo'] = array('primera'=>'A', 'segunda'=>'B', 'tercera'=>'C', 'cuarta'=>'D');
var_dump( definido() );
$foo = 'CUALQUIER TEXTO...'; // Redefiniendo el valor de $foo
var_dump( definido() );
?>
Al ejecutar el script, el resultado es este:
Código:
string(32) "$foo['tercera'] está definido: C"
string(32) "$foo['tercera'] está definido: C"
La primera llamada a definido(), como es de esperarse, devuelve el equivalente a true (Imprime el valor de la variable). Luego, la segunda llamada inesperadamente devuelve exactamente lo mismo. ¿Por qué?