PHP全局變量中的global與$GLOBALS的區(qū)別和用法小結(jié)
1.有些場(chǎng)合需要全局變量的出現(xiàn),如下例子:
<?php
$name="why";//定義變量name,并初始化
function echoName()
{
//試圖引用函數(shù)外面的變量
echo "myname is ".$name."<br>";
}
echoName();
?>
上面的代碼的結(jié)果為:"myname is" 。而不是期望中的:"myname is why"。因?yàn)楹瘮?shù)沒(méi)有傳遞參數(shù)$name的值,企圖引用外部變量,不會(huì)成功。這時(shí)候考慮使用global。
2.于是將上述代碼改為
<?php
global $name="why";//用global聲明的同時(shí)賦值
function echoName()
{
//試圖引用函數(shù)外面的變量
echo "myname is ".$name."<br>";
}
echoName();
?>
結(jié)果為:Parse error: syntax error, unexpected '=', expecting ',' or ';' in http:\\xxxxxxx.com on line 2
也即上述代碼有錯(cuò)誤。原因是不能在用global聲明變量的同時(shí)給變量賦值。
3.再次更改上述代碼:
<?php
global $name;
$name="why";//將global聲明與賦值分開(kāi)
function echoName()
{
//試圖引用函數(shù)外面的變量
echo "myname is ".$name."<br>";
}
echoName();
?>
但是得到的結(jié)果依然為:"myname is" ,原因是global的用法不對(duì)。
global的正確用法是:"在一個(gè)函數(shù)中引入外部的一個(gè)變量,如果該變量沒(méi)有通過(guò)參數(shù)傳遞進(jìn)來(lái),那么就通過(guò)global引入進(jìn)來(lái)。" 也就是說(shuō),當(dāng)一個(gè)函數(shù)引用一個(gè)外部變量時(shí),可以在函數(shù)內(nèi)通過(guò)global來(lái)聲明該變量,這樣該變量就可以在函數(shù)中使用了(相當(dāng)于當(dāng)作參數(shù)傳遞進(jìn)來(lái))。
4.于是進(jìn)一步改動(dòng)上述代碼:
<?php
$name="why";//定義變量name,并初始化
function echoName()
{
//通過(guò)global來(lái)聲明$name,相當(dāng)于傳遞參數(shù)
global $name;
echo "myname is ".$name."<br>";
}
echoName();
?>
此時(shí)得到期望中的結(jié)果:"myname is why"。
以上代碼說(shuō)明,global是起傳遞參數(shù)的作用,而并非使變量的作用域?yàn)槿帧?/p>
5.以下代碼證明了這一點(diǎn):
<?php
$name="why";//聲明變量$name,并初始化
function echoName1()
{
//在函數(shù)echoName1()里使用global來(lái)聲明$name
global $name;
echo "the first name is ".$name."<br>";
}
function echoName2()
{
//在函數(shù)echoName2()里沒(méi)有使用global來(lái)聲明$name
echo "the second name is ".$name."<br>";
}
echoName1();
echoName2();
?>
結(jié)果為:
the first name is why
the second name is
上面的結(jié)果說(shuō)明在函數(shù)echoName2()中,$name變量仍然是未知的,因?yàn)闆](méi)有用global來(lái)聲明,也就沒(méi)有傳遞進(jìn)去。同時(shí)也證明了global的作用并不是使變量的作用域?yàn)槿帧?/p>
綜上,global的作用就相當(dāng)于傳遞參數(shù),在函數(shù)外部聲明的變量,如果在函數(shù)內(nèi)想要使用,就用global來(lái)聲明該變量,這樣就相當(dāng)于把該變量傳遞進(jìn)來(lái)了,就可以引用該變量了。
當(dāng)然,除了通過(guò)上述方法外,還可以使用全局?jǐn)?shù)組$GLOBALS來(lái)解決問(wèn)題,在需要用到外部變量的地方,使用$GLOBALS['var']就可以了。例:
<?php
$name="why";//定義變量name,并初始化
function echoName()
{
//通過(guò)全局?jǐn)?shù)組$GLOBALS來(lái)引用外部變量
echo "myname is ".$GLOBALS['name']."<br>";
}
echoName();
?> 得到的結(jié)果為:
myname is why 。
到此這篇關(guān)于PHP全局變量中的global與$GLOBALS的區(qū)別和使用的文章就介紹到這了,更多相關(guān)php global與$GLOBALS內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- PHP超級(jí)全局變量【$GLOBALS,$_SERVER,$_REQUEST等】用法實(shí)例分析
- PHP global全局變量經(jīng)典應(yīng)用與注意事項(xiàng)分析【附$GLOBALS用法對(duì)比】
- PHP中$GLOBALS與global的區(qū)別詳解
- PHP中$GLOBALS[''HTTP_RAW_POST_DATA'']和$_POST的區(qū)別分析
- PHP中全局變量global和$GLOBALS[]的區(qū)別分析
- PHP語(yǔ)言中g(shù)lobal和$GLOBALS[]的分析 之二
- php中g(shù)lobal和$GLOBALS[]的分析之一
相關(guān)文章
php時(shí)間戳格式化顯示友好的時(shí)間函數(shù)分享
在一些微博系統(tǒng)中經(jīng)常要將時(shí)間于現(xiàn)在時(shí)間相比顯示為多久以前發(fā)布的,如顯示為:剛剛、5秒前、5小時(shí)前、5天前..這種顯示非常的友好,那么我們?cè)趺从胮hp來(lái)實(shí)現(xiàn)呢,這就是本文探討的內(nèi)容,各位看官請(qǐng)仔細(xì)閱讀下文2014-10-10
php微信公眾號(hào)開(kāi)發(fā)之現(xiàn)金紅包
這篇文章主要為大家詳細(xì)介紹了php微信公眾號(hào)開(kāi)發(fā)之現(xiàn)金紅包,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
PHP網(wǎng)頁(yè)游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(十四)
這篇文章主要介紹了PHP網(wǎng)頁(yè)游戲Xnova(ogame)源碼解讀的資源更新頁(yè)面部分,需要的朋友可以參考下2014-06-06
destoon在360瀏覽器下出現(xiàn)用戶被強(qiáng)行注銷(xiāo)的解決方法
這篇文章主要介紹了destoon在360瀏覽器下出現(xiàn)用戶被強(qiáng)行注銷(xiāo)的解決方法,需要的朋友可以參考下2014-06-06
php正確輸出json數(shù)據(jù)的實(shí)例講解
今天小編就為大家分享一篇php正確輸出json數(shù)據(jù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
PHP使用遞歸按層級(jí)查找數(shù)據(jù)的方法
這篇文章主要介紹了PHP使用遞歸按層級(jí)查找數(shù)據(jù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
用Simple Excel導(dǎo)出xls實(shí)現(xiàn)方法
因?yàn)榍皫滋鞂?xiě)了篇文章,用php-excel-reader類(lèi)導(dǎo)入excel內(nèi)容,順便說(shuō)些excel導(dǎo)出問(wèn)題,需要的朋友可以了解下2012-12-12
laravel migrate初學(xué)常見(jiàn)錯(cuò)誤的解決方法
之前給大家介紹了關(guān)于laravel migrate入門(mén)的基礎(chǔ),下面這篇文章主要給大家介紹了關(guān)于laravel migrate初學(xué)時(shí)常見(jiàn)錯(cuò)誤的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
四個(gè)常見(jiàn)html網(wǎng)頁(yè)亂碼問(wèn)題及解決辦法
當(dāng)我們做網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)遇到網(wǎng)頁(yè)中文亂碼,那么此問(wèn)題如何解決呢,下面腳本之家的小編給大家分享四個(gè)常見(jiàn)html網(wǎng)頁(yè)亂碼問(wèn)題及解決辦法,需要的朋友可以參考下2015-09-09

