ID:               25692
 Updated by:       [EMAIL PROTECTED]
 Reported By:      declan at context dot ie
-Status:           Open
+Status:           Bogus
-Bug Type:         Arrays related
+Bug Type:         *General Issues
 Operating System: linux
 PHP Version:      Irrelevant
 New Comment:

Try setting error_reporting to E_ALL and you'll find out why it doesn't
work.



Previous Comments:
------------------------------------------------------------------------

[2003-09-29 10:50:13] declan at context dot ie

Description:
------------
If you pass a variable name to a function and then try to dereference
that variable name for use in a global statement, then the global
statement fails.

I believe the problem lies in the way that global is implemented. If I
have the following:

$ary[foo]="bar";
function use_global($varname) {
  global $$varname;

  echo "$varname is set to ". $$varname;
}
use_global ("ary[foo]");

then I think that the global line is being re-written to be equivalent
to something like:

$_use_global_varname=&$GLOBALS["ary[foo]"];

whereas, AFAICS, it should be:

$_use_global_varname=&$GLOBALS["ary"]["foo"];

I want to be able to use this construct without having to know whether
the incoming variable is a plain variable or an array element.

Reproduce code:
---------------
<?php // -*-php-*-

function use_global ($formvar)
{
  $ref=&$GLOBALS[$formvar];

  echo "formvar: $formvar = " . $$ref;

};

$global=array ();
$global["foo"]=1;
$global["bar"]=2;
$global["baz"]=3;

echo "global[bar]=$global[bar]\n";
use_global("global[bar]");

?>

Expected result:
----------------
If things worked correctly, the output should be:

global[bar]=2 
formvar: global[bar] =2



Actual result:
--------------
global[bar]=2 
formvar: global[bar] =


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=25692&edit=1

Reply via email to