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

Reply via email to