关于global的使用疑问

<?
$var1 = 1;
$var2 = 2;
function test()
{
    global $var1,$var2;
    $var1 = &var2;
}
test();
echo $var1
?>

答案是1

我的思路:

  1. global 将 test 中的 $var1,$var2 定义成两个指针,其中 &$var1 指向 1,&$var2 指向 2.
  2. $var1 = &$var2; 此时又将 $var1 赋值 2
  3. test() 之后, $var1 不应该等于2吗?
慕田峪7331174
浏览 308回答 3
3回答

喵喔喔

$var1 = &$var2,$var1是存放的$var2的地址啊,$var1本应该就是1啊,疑惑的应该是$var2为什么等于2不等于1啊?

侃侃尔雅

赋值语句改成:$var1 = $var2;

侃侃无极

php 中引用并不是指针,global 的定义本身就是引用方式实现的。你可以把 函数去掉 $var1 $var2 的结果都是2PHP手册中已经有说明 在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。。这有可能导致预料之外的行为
打开App,查看更多内容
随时随地看视频慕课网APP