[在使用PHP的全局变量和引用时,我遇到了一个问题。我想将一个变量设置为函数中另一个变量的引用。令我惊讶的是,全局变量在函数调用后丢失了其引用。
在下面的代码中,您可以看到函数$a
内部获得了值5
,但之后它又恢复了其旧值(1
)。另一方面,$x
保留了在函数内部分配的值。
<?php
$a = 1;
$x = 2;
function test() {
global $a;
global $x;
$a = &$x;
$x = 5;
echo PHP_EOL;
echo $a . PHP_EOL;
echo $x . PHP_EOL;
}
test();
echo PHP_EOL;
echo $a . PHP_EOL; // $a is 1 here instead of 5
echo $x . PHP_EOL;
$a = &$x;
echo PHP_EOL;
echo $a . PHP_EOL;
echo $x . PHP_EOL;
输出:
5
5
1
5
5
5
为什么在完成功能后$a
会失去参考?
正如@Banzay所注意到的,我相信$a = &$x;
仅会更改函数范围的变量。您应该使用$GLOBALS
来更改函数中的值;
$GLOBALS
function test() {
global $a;
global $x;
$GLOBALS['a'] = &$x;
$x = 5;
echo PHP_EOL;
echo $a . PHP_EOL;
echo $x . PHP_EOL;
}
Try online!