ID: 22847 Updated by: [EMAIL PROTECTED] Reported By: jparneodo at yahoo dot fr -Status: Verified +Status: Bogus Bug Type: Scripting Engine problem Operating System: * PHP Version: 4CVS, 5CVS (2004-04-13) New Comment:
RTFM "true global variable imported inside a function scope with the global statement actually creates a reference to the global variable. This can lead to unexpected behaviour which the following example addresses.." Previous Comments: ------------------------------------------------------------------------ [2003-08-06 19:16:47] [EMAIL PROTECTED] The problem can be replicated with a simpler script: <?php class A { var $b=1; function test() { global $g; $g =& $this->b; } } $n = new A(); $g = "BAR"; $n->test(); var_dump($g); ?> The problem itself appears to be ZE's inability to make a variable imported using global a reference. if $GLOBALS['var_name'] is used the script works correctly ------------------------------------------------------------------------ [2003-03-24 06:19:35] jparneodo at yahoo dot fr function cmp($a,$b){ global $g; var_dump($g); // NULL here if($g[$a]>$g[$b]){ return -1; }elseif($g[$a]<$g[$b]){ return 1; }else{ return 0; } } class A { var $aa=array('B'=>2,'A'=>1,'C'=>3); function sortme(){ global $g; $g=&$this->aa; uksort($g,'cmp'); } } $a=new A; $a->sortme(); // Don't work $g=&$a->aa; uksort($g,'cmp'); // Work ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22847&edit=1