On Wed, 04 Aug 2004 23:15:03 +0200, ARico <[EMAIL PROTECTED]> wrote: > Using Variable Variables works fine inside functions for global > defined variables if you declare them as global inside the function. > Suprinsingly, it does not seem to work with superglobals. Take the > following example: > > // code //////////////////////////////////////////////////////////// > > <?php > $glob_var="Var 1"; > > $var_glob_var="glob_var"; > $var_ENV="_ENV"; > > echo $_ENV["OS"],"\n"; > echo $glob_var,"\n\n"; > > echo $var_glob_var,"\n"; > echo $var_ENV,"\n\n"; > > echo $$var_glob_var,"\n"; > echo ${$var_ENV}["OS"],"\n\n"; > > foo1($var_glob_var); > foo2($var_glob_var); > foo3(); > foo4(); > foo5($var_ENV); > foo6($var_ENV); > foo7(); > foo8(); > foo9(); > > function foo1($arg){ > echo "--- In foo1 --------------\n"; > echo $arg,"\n"; > echo $$arg,"\n"; > echo "--------------------------\n"; > } > function foo2($arg){ > global $glob_var; > > echo "--- In foo2 --------------\n"; > echo $arg,"\n"; > echo $$arg,"\n"; > echo "--------------------------\n"; > } > function foo3(){ > $arg="glob_var"; > echo "--- In foo3 --------------\n"; > echo $arg,"\n"; > echo $$arg,"\n"; > echo "--------------------------\n"; > } > function foo4(){ > global $glob_var; > > $arg="glob_var"; > echo "--- In foo4 --------------\n"; > echo $arg,"\n"; > echo $$arg,"\n"; > echo "--------------------------\n"; > } > function foo5($arg){ > echo "--- In foo5 --------------\n"; > echo $arg,"\n"; > echo ${$arg}["OS"],"\n"; > echo "--------------------------\n"; > } > function foo6($arg){ > global $_ENV; > > echo "--- In foo6 --------------\n"; > echo $arg,"\n"; > echo ${$arg}["OS"],"\n"; > echo "--------------------------\n"; > } > function foo7(){ > $arg="_ENV"; > > echo "--- In foo7 --------------\n"; > echo $arg,"\n"; > echo ${$arg}["OS"],"\n"; > echo "--------------------------\n"; > } > function foo8(){ > global $_ENV; > $arg="_ENV"; > > echo "--- In foo8 --------------\n"; > echo $arg,"\n"; > echo ${$arg}["OS"],"\n"; > echo "--------------------------\n"; > } > function foo9(){ > echo "--- In foo9 --------------\n"; > echo $_ENV["OS"],"\n"; > echo "--------------------------\n"; > } > ?> > > // Output ///////////////////////////////////////////////////////// > > Windows_NT > Var 1 > > glob_var > _ENV > > Var 1 > Windows_NT > > --- In foo1 -------------- > glob_var > > -------------------------- > --- In foo2 -------------- > glob_var > Var 1 > -------------------------- > --- In foo3 -------------- > glob_var > > -------------------------- > --- In foo4 -------------- > glob_var > Var 1 > -------------------------- > --- In foo5 -------------- > _ENV > > -------------------------- > --- In foo6 -------------- > _ENV > > -------------------------- > --- In foo7 -------------- > _ENV > > -------------------------- > --- In foo8 -------------- > _ENV > > -------------------------- > --- In foo9 -------------- > Windows_NT > -------------------------- > > // Version ////////////////////////////////////////////// > > PHP 4.3.7 (cgi-fcgi) (built: Jun 2 2004 15:49:31) > Copyright (c) 1997-2004 The PHP Group > Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies > > // End ////////////////////////////////////////////////// > > I'm doing something wrong? Or this is the expected behavior? I know > I could use php references, but linking style does confuse me a bit ( > how do you change a reference to point to a new variable if it's > allready referencing another one ? ) > > Thank you in advance >
Looks right to me. I guess PHP doesn't support it. You may want to file a bug or look for more on superglobals in the manual or bug reports. -- DB_DataObject_FormBuilder - The database at your fingertips http://pear.php.net/package/DB_DataObject_FormBuilder paperCrane --Justin Patrin-- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php