鍍金池/ 問答/PHP/ 關于global的使用疑問

關于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嗎?
回答
編輯回答
喜歡你

php 中引用并不是指針,global 的定義本身就是引用方式實現(xiàn)的。
你可以把 函數去掉 $var1 $var2 的結果都是2
PHP手冊中已經有說明

在一個函數域內部用 global 語句導入的一個真正的全局變量實際上是建立了一個到全局變量的引用。。這有可能導致預料之外的行為
2018年9月3日 21:32
編輯回答
脾氣硬

賦值語句改成:$var1 = $var2;

2018年5月28日 15:39
編輯回答
溫衫
$var1 = &$var2,$var1是存放的$var2的地址啊,$var1本應該就是1啊,疑惑的應該是$var2為什么等于2不等于1???
2017年6月5日 02:21