The Arcive of vBulletin Modifications Site. |
|
|
#1
|
|||
|
|||
|
I suspect I'm missing something very obvious here. Can someone explain the behaviour of this code:
Code:
<?php
$test = "12345";
$anothertest = "";
$yetanothertest = "";
function getref() {
global $test;
global $anothertest;
global $yetanothertest;
$anothertest =& $test;
$GLOBALS['yetanothertest'] =& $test;
echo "<br /><br />Inside<br />";
echo "test:".$test."<br />";
echo "anothertest:".$anothertest."<br />";
echo "yetanothertest:".$yetanothertest."<br />";
}
getref();
echo "<br /><br />Outside<br />";
echo "test:".$test."<br />";
echo "anothertest:".$anothertest."<br />";
echo "yetanothertest:".$yetanothertest."<br />";
echo "<br /><br />";
?>
Inside test:12345 anothertest:12345 yetanothertest: Outside test:12345 anothertest: yetanothertest:12345 In other words, within the function, the reference assignment seems to have updated $anothertest but not $yetanothertest, yet having left the function, it's the other way round. With direct assignments ($A = $B) instead of references ($A =& $B), both of the global variables are updated and correctly displayed inside and outside the function. |
|
#2
|
|||
|
|||
|
What values were you expecting?
PHP Code:
and PHP Code:
I know I'm not explaining it that well, there's a section in the PHP manual dedicated to explaining references over at php.net. |
|
#3
|
|||
|
|||
|
I was expecting $GLOBALS['abc'] to be identical to global $abc inside the function, and it isn't.
As you say, it's explained in the php help manual: Warning If you assign a reference to a variable declared global inside a function, the reference will be visible only inside the function. You can avoid this by using the $GLOBALS array. Think about global $var; as a shortcut to $var =& $GLOBALS['var'];. Thus assigning other reference to $var only changes the local variable's reference. I didn't get that far on that page. |
![]() |
|
|
| X vBulletin 3.8.12 by vBS Debug Information | |
|---|---|
|
|
More Information |
|
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|