<?
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2;
$var1 = &var2;
}
test();
echo $var1
?>
答案是1
我的思路:
- global 将 test 中的 $var1,$var2 定义成两个指针,其中 &$var1 指向 1,&$var2 指向 2.
- $var1 = &$var2; 此时又将 $var1 赋值 2
- test() 之后, $var1 不应该等于2吗?
<?
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2;
$var1 = &var2;
}
test();
echo $var1
?>
答案是1
我的思路:
php 中引用并不是指针,global 的定义本身就是引用方式实现的。
你可以把 函数去掉 $var1 $var2 的结果都是2
PHP手册中已经有说明
在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。。这有可能导致预料之外的行为
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答627 阅读✓ 已解决
802 阅读