這里也順帶提下php $GLOBALS變量 即引用全局作用域中可用的全部變量, 在 $GLOBALS 數(shù)組中,每一個變量為一個元素,鍵名對應(yīng)變量名,值對應(yīng)變量的內(nèi)容。$GLOBALS 之所以在全局范圍內(nèi)存在,是因為 $GLOBALS 是一個超全局變量。注意$GLOBALS 的寫法,比如變量$a1,寫法為$GLOBALS[ a1 ]。
那么下面用個淺而易懂得例子給大家詳細(xì)解釋下global在php中出現(xiàn)無效的問題:
首先demo1.php頁面代碼如下:
?php $site_name = CodePlayer function sayHi(){ global $site_name; echo Hello! Welcome to $site_name ! ? demo2.php頁面代碼如下:
?php function include_view_page(){ include demo2.php sayHi(); include_view_page(); ? 當(dāng)我們訪問demo1.php頁面,能夠正確顯示出歡迎語句。然而當(dāng)我們使用瀏覽器訪問demo2.php頁面輸出結(jié)果卻如下:
Hello! Welcome to !
我們在函數(shù)include_view_page()中調(diào)用sayHi()函數(shù)時,demo2.php頁面sayHi()函數(shù)中g(shù)lobal的$site_name卻沒有被正確識別、生效。
其實當(dāng)我們在函數(shù)include_view_page()中include demo2.php頁面時,demo2.php頁面的變量$site_name就相當(dāng)于存放在include_view_page()函數(shù)內(nèi)的作用域中。大家都知道在函數(shù)內(nèi)global一個變量實際上是在函數(shù)內(nèi)建立一個對頁面全局變量的引用。而在這個例子中,$site_name變量對于demo1.php而言,它僅僅是include_view_page()函數(shù)內(nèi)的局部變量,因此無法顯示global變量,我們進(jìn)行相關(guān)調(diào)用時是無法獲取到正確的變量和變量值。
在php中,我們尤其需要注意類似上述在函數(shù)內(nèi)include某個頁面,導(dǎo)致該頁面中變量的作用域發(fā)生改變的問題。為了避免這種情況,我們應(yīng)該盡量減少多層次的include調(diào)用,也盡量不要在函數(shù)內(nèi)使用include。此外,我們還可以在demo2.php的頁面中將$site_name進(jìn)行全局變量形式的聲明。
//demo2.php ?php global $site_name; $site_name = CodePlayer function sayHi(){ global $site_name; echo Hello! Welcome to $site_name ! ? 函數(shù)中如何引用全局變量示例如下:
輸出的結(jié)果如下:
var2 is set to xxxxxx
var2 is set to eeee
可見,上面的代碼中:
$var2 = $var1; //1 只對函數(shù)內(nèi)部可見。 而 $GLOBALS[ var2 ] = $var1; //2 在全局范圍內(nèi)可見。
希望本篇文章介紹關(guān)于php global出現(xiàn)無效的問題對大家有所幫助!
【相關(guān)文章推薦】
關(guān)于PHP中g(shù)lobal的問題
global與$GLOBAL[ ]的一些不同理解
用global怎么不是輸出30
PHP源碼分析之Global關(guān)鍵字
以上就是為什么global變量會出現(xiàn)無效或者錯誤的現(xiàn)象呢?的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答