|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2012-12-07 02:37 UTC] axdr at bk dot ru
Description:
------------
'global'-declaration inside a function dosn't affect referencies.
Test script:
---------------
function func() {
global $a, $b;
$a = 'aaa';
$b = &$a;
$GLOBALS['c'] = &$a;
}
func();
echo "$a, $b, $c";
Expected result:
----------------
aaa, aaa, aaa
Actual result:
--------------
aaa, , aaa
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Dec 13 03:00:02 2025 UTC |
'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,also see: <?php function func() { global $a, $b; $a = 'aaa'; $b = &$a; $b = 'bbb'; } func(); var_dump($a); output: bbbglobal $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'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'