Edit report at https://bugs.php.net/bug.php?id=63714&edit=1
ID: 63714 User updated by: axdr at bk dot ru Reported by: axdr at bk dot ru Summary: incorrect global statement Status: Not a bug Type: Bug Package: Scripting Engine problem Operating System: Windows PHP Version: 5.4.9 Block user comment: N Private report: N New Comment: Please, ignore previous comment function func1() { global $gvar; $var = &$GLOBALS['var']; $GLOBALS['var'] = &$gvar; var_dump($var, $GLOBALS['var'], $gvar); } function func2() { global $gvar; global $var; $GLOBALS['var'] = &$gvar; var_dump($var, $GLOBALS['var'], $gvar); } $gvar = 'aaa'; $var = 'bbb'; func1(); echo '<hr>'; $gvar = 'aaa'; $var = 'bbb'; func2(); output: string 'bbb' string 'aaa' string 'aaa' -------------------------------------------------------------------------------- string 'bbb' string 'bbb' string 'bbb' Previous Comments: ------------------------------------------------------------------------ [2012-12-08 00:00:31] axdr at bk dot ru global $var is reference to $GLOBALS['var'] but is not equivalent to $var = &$GLOBALS['var'] $gvar = 'aaa'; $var = 'bbb'; function func2() { global $gvar; global $var; $GLOBALS['var'] = &$gvar; var_dump($var, $GLOBALS['var']); } function func1() { global $gvar; $var = &$GLOBALS['var']; $GLOBALS['var'] = &$gvar; var_dump($var, $GLOBALS['var']); } function func3() { $gvar = 'aaa'; $var1 = 'bbb'; // вмеÑÑо global $var $var = &$var1; $var1 = &$gvar; var_dump($var, $var1); } func1(); echo '<hr>'; func2(); echo '<hr>'; func3(); output: 'bbb' 'aaa' --------- 'aaa' 'aaa' --------- 'bbb' 'aaa' ------------------------------------------------------------------------ [2012-12-07 04:08:02] axdr at bk dot ru Sorry. You are right. But I think this is irrational. It's impossible to read all documentation and to remember word for word. This is a kind of underwater mine. ------------------------------------------------------------------------ [2012-12-07 02:54:35] larue...@php.net also see: <?php function func() { global $a, $b; $a = 'aaa'; $b = &$a; $b = 'bbb'; } func(); var_dump($a); output: bbb ------------------------------------------------------------------------ [2012-12-07 02:52:22] larue...@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php global $a; make a local variable 'a' reference to $GLOBALS['a']; also thinking of: $b = &$a; // b reference to a $b = &$c; // change reference to c then: global $a, $b; //b reference to $GLOBALS['b'] $a = 'aaa'; $b = &$a; //b now reference to local $a with GLOBALS['b'] unchanged ------------------------------------------------------------------------ [2012-12-07 02:44:58] axdr at bk dot ru 'global'-declaration kills referencies function func() { global $a, $b; $a = 'aaa'; $b = &$a; echo "$a, $b", '<br>'; global $a, $b; echo "$a, $b"; } func(); output: aaa, aaa aaa, ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=63714 -- Edit this bug report at https://bugs.php.net/bug.php?id=63714&edit=1