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

Reply via email to