我聽說使用全局變量不好,但我只是想了解 PHP 語言的工作原理。我是編碼世界的初學者。為什么可以在函數內創建全局變量?無論是通過使用全局關鍵字還是通過超全局變量。我以為這兩個動作是用來訪問函數中的全局變量的。我認為創建全局變量的唯一方法是在函數外部創建它;在全球范圍內。我看過許多不同的網站,包括w3schools.com和php.net這只是我創建的一些簡單代碼,用于嘗試理解全局變量與函數的工作方式:<?phpfunction sample1() { global $a; echo $a = "this ";}sample1();function sample2() { echo $GLOBALS['$b'] = "is ";}sample2();function sample3() { global $c; $c = "an ";}sample3();echo $c;function sample4() { $GLOBALS['$d'] = "example ";}sample4();echo $GLOBALS['$d'];?>這是代碼的結果:這是一個例子所有代碼都有效,但我不明白我是如何在這些代碼塊中的任何一個上創建全局變量的?全局變量不是在函數之外創建的。如何在函數內部創建它們?我錯過了什么?感謝任何回復 - 如果可能,請保持簡單的答案 - 我想在評論部分進一步討論這個問題,因為我相信我會有后續問題 - 謝謝
1 回答

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
可以通過您剛剛執行的兩種方式在全局范圍內創建變量 - 沒有人說函數不能在全局范圍內創建(或更改)變量 - 當您通過 或 關鍵字明確要求$GLOBALS
時global
。
問題在于您的信念“我認為創建全局變量的唯一方法是在函數外部創建它;在全局范圍內?!?nbsp;不是一個確切的陳述。當您使用$GLOBALS
and時global
,您指的是全局范圍。您在函數內部引入了對全局范圍的引用。
實際上,global
您將本地引用鏈接到全局引用,同時$GLOBALS
您顯式引用了全局范圍(可以在 PHP 內部以相同的方式將其引入本地范圍)。
在那種情況下,你明確地說“我希望這個變量在全局范圍內可用,讓它如此!” PHP 會按照您的要求進行操作。這種行為因語言而異,但正如您所發現的,對于 PHP,這是允許的。
我不建議以任何方式使用它——它使您的代碼很難理解和爭論,因此請將其視為深奧的細節。
- 1 回答
- 0 關注
- 102 瀏覽
添加回答
舉報
0/150
提交
取消