PHP中全局变量$GLOBALS和global的区别
本篇文章分享一下PHP中的全局变量$GLOBALS和global的区别。
一、全局变量$GLOBALS
PHP全局变量有很多,如下的都属于超全局变量(Superglobal):$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。
官方说明:$GLOBALS — 引用全局作用域中可用的全部变量。一个包含了全部变量的全局组合数组。变量的名字就是数组的键。即出现过的全局变量,就可以通过$GLOBALS这个数组取得。
PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。
上例子,要访问外部的$foo必须使用 $GLOBALS 数组。对于通过include文件进来的外部全局变量也适用。 php中global也有这样的功能,它和$GLOBALS的区别在于:global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量。$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致。 对于类中的成员变量,类中函数必须使用$this->的方式访问,不能用$GLOBALS方式: global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。 执行结果为: 0 5 为什么不是2个5而是1个0和1个5呢? 再修改一下例子: 执行结果只输入一个2; 1、$GLOBALS是由所有已定义全局变量自动形成的数组。变量名就是该数组的索引。即$GLOBALS['var1']与函数外部的变量$var1是同一个变量,所以将$GLOBALS['var1'] 删除后,该变量已不存在,所有无法输出了。 注:$GLOBALS是自动全局变量。这意味着它在所有的脚本中都有效。在函数或方法中不需要使用 global $GLOBALS;来访问它。 2、"global $var1;"是产生了函数外部$var1的别名变量"$var1",它不是真正的函数外部变量,他只存在于函数的内部,所以即使在函数内将别名变量删除也不会影响外面的变量,但是可以修改函数外部变量的值。 或许有的人总想知道这个或那个的区别:在php程序,包括其他程序的学习中,自己动手实验,根据结果加上的思考,有的时候比上网查找可能会来得更快一些,更准确一些。 下面我们来讲一下,php在全局范围内访问变量要怎么办? 例一: global定义全局变量。 先不给出结果,自己运行一下程序。函数内部的变量可以访问到了。 从结果可以看出,unset只是断开变量名与变量值连接,并没有马上销毁变量的值,而且在函数内部定义的全局变量,实际在外部只是使用了函数内部的别名而已,所以我们在外面依然可以访问$var1。 例二:$GLOBALS在函数内部访问函数外面定义的变量。 直接在函数内部使用$waibu是会出错的。</span>$foo="Example content";</p>test();<br />function test(){<br /> $foo="local variable";<br /> echo '$foo in current scope: '.$foo."<br>";<br /> echo '$foo in global scope: '.$GLOBALS["foo"]."<br>";<br /><p>}</p>
二、实例讲解
<p>function t1(){</p> global $var1,$var2;<br /> $var2=&$var1;<br />}<br />function t2(){<br /> $GLOBALS['var3']=&$GLOBALS['var1'];<br />}<br />$var1=5;<br />$var2=$var3=0;<br />t1();<br />print $var2."\n";<br />t2();<br /><p>print $var3."\n";</p>
<p>function t1(){</p> global $var1;<br /> $var1=2;<br /> unset($var1);<br />}<br />function t2(){<br /> $GLOBALS['var1']=3;<br /> unset($GLOBALS['var1']);<br />}<br />$var1=1;<br />t1();<br />print $var1."\n";<br />t2();<br /><p>print $var1."\n";</p>
<p>function test_global(){</p> global $var1;<br /> $var1='ok';<br /> unset($var1);<br />}<br />test_global();<br />$var2=&$var1;<br />unset($var1);<br /><p>echo $var2;</p>
<p>$waibu='out';</p>function ff(){<br /> echo $GLOBALS['waibu'];<br />}<br /><p>ff();</p>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在PHP開發中,我們常常會遇到PHPNotice:Undefinedvariable的錯誤提示。這個錯誤提示表示我們在程式碼中使用了一個未定義的變數。雖然這個錯誤提示不會導致程式碼崩潰,但是它會影響程式碼的可讀性和可維護性。下面,本文將為大家介紹一些解決這個錯誤的方法。 1.在開發過程中使用error_reporting(E_ALL)函數在PHP開發中,我們可

PHPNotice:Undefinedvariable:arrin的解決方法在PHP程式設計中,我們常常會遇到「Notice:Undefinedvariable」這個錯誤提示。這個錯誤提示一般是因為訪問了未定義的變數或變數未被初始化所導致的。對於這個問題,我們需要及時找到問題並解決。在本文中,我們將重點討論PHPNotice:Undefin

如何在PHP中使用數字變數在PHP中,數字變數是一種無需聲明而直接使用的變數類型。可以使用數字變數進行數學計算、數據比較和其他數值操作。本文將介紹如何在PHP中使用數字變量,並提供具體的程式碼範例。定義數字變數在PHP中,定義數字變數非常簡單,只要直接給變數一個數字。下面是一個範例:$number=10;在上面的程式碼中,我們定義了一個名為$numb

如何快速排除PHP變數未定義錯誤?在PHP開發中,常會遇到變數未定義的錯誤。這是因為在程式碼中使用了一個未賦值的變數。當遇到這種錯誤時,我們需要迅速找到錯誤的原因並解決它。以下是一些快速排除PHP變數未定義錯誤的方法,可幫助您更快定位和修復錯誤。開啟錯誤報告:當我們開啟錯誤報告時,PHP會顯示所有的錯誤和警告訊息,包括變數未定義錯誤。我們可以透過在代碼的開

在PHP中,您可以使用和號(&)符號將變數按引用而不是按值傳遞。這樣可以在函數或方法內修改原始變數。主要有兩種方式可以透過引用傳遞PHP變數:使用ampersand符號在函數/方法聲明中使用和符號將變數傳遞給函數/方法時在函數/方法聲明中使用和號在PHP中,您可以使用函數/方法宣告中的和號符號(&)透過引用傳遞變數。以下是更新的解釋:要透過在函數/方法聲明中使用&符號來傳遞引用變量,您需要在函數/方法定義中在參數名稱之前包含&符號。這表示參數應該透過引用傳遞,允許

在開發PHP應用程式時,如果遇到了"Undefinedvariable:sql"的提示,這通常意味著您正在引用一個未定義的變數。這可能是由於許多原因引起的,例如變數名稱拼字錯誤、作用域問題或程式碼中的語法錯誤等。在本篇文章中,我們將探討這個問題的各種原因,並提供一些解決這個問題的方法。 1.變數名稱拼字錯誤在您的PHP程式碼中,如果變數名稱不正確或拼字錯誤,系

PHPNotice:Undefinedvariable:result是指在PHP程式中呼叫了一個未定義的變數result,這會導致程式產生Notice層級的警告。這種情況一般是由於程式設計師在編寫PHP程式碼時未正確定義變數或變數的作用域所造成的。如果不及時解決,這種Notice層級的警告可能會導致程式的運行出現問題。那麼,如何解決PHPNotice:

在PHP程式設計中,變數是儲存值的基本單元,用於在程式執行過程中儲存和使用資料。在PHP中,變數可以被賦予不同的資料類型,包括整數、浮點型、字串、陣列等等。在本文中,我們將介紹PHP程式設計中常見的變數及其用法。簡單變數簡單變數是最常見的變數類型,它們可以儲存整數、浮點數、字串等常規資料類型。在PHP中,未定義變數的初始值為NULL。以下是幾個實例:整數變數:$
