亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可以使用關鍵字 global 并通過 PHP 函數中的超全局變量創建全局變量嗎?

可以使用關鍵字 global 并通過 PHP 函數中的超全局變量創建全局變量嗎?

PHP
繁花如伊 2023-03-04 17:34:15
我聽說使用全局變量不好,但我只是想了解 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個贊

可以通過您剛剛執行的兩種方式在全局范圍內創建變量 - 沒有人說函數不能在全局范圍內創建(或更改)變量 - 當您通過 或 關鍵字明確要求$GLOBALSglobal

問題在于您的信念“我認為創建全局變量的唯一方法是在函數外部創建它;在全局范圍內?!?nbsp;不是一個確切的陳述。當您使用$GLOBALSand時global,您指的是全局范圍。您在函數內部引入了對全局范圍的引用。

實際上,global您將本地引用鏈接到全局引用,同時$GLOBALS您顯式引用了全局范圍(可以在 PHP 內部以相同的方式將其引入本地范圍)。

在那種情況下,你明確地說“我希望這個變量在全局范圍內可用,讓它如此!” PHP 會按照您的要求進行操作。這種行為因語言而異,但正如您所發現的,對于 PHP,這是允許的。

我不建議以任何方式使用它——它使您的代碼很難理解和爭論,因此請將其視為深奧的細節。


查看完整回答
反對 回復 2023-03-04
  • 1 回答
  • 0 關注
  • 102 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號