關(guān)于PHP中的global語法的深入理解

global語法原理:

在函數(shù)中g(shù)lobal某個外部變量,即傳遞了一個引用進(jìn)來,通俗的說,就是引入了外部變量的值,但是當(dāng)改變引入的變量值時,外部同名變量值也會改變。

如下代碼:

$globalStr = '.net';

function globalTest(){

?global $globalStr;

?$globalStr = 'jb51'.$globalStr;

?unset($globalStr); ? //釋放變量$globalStr,作用范圍為函數(shù)內(nèi)部.,也就是說在函數(shù)內(nèi)部消除掉這個變量; ? ? ? ? ? ? ? ?

}

globalTest();

echo $globalStr;?

最終輸出為jb51.net,也就是說和函數(shù)內(nèi)部同名的外部變量globalStr值也改變了。

但是也有特殊情況。

如下代碼:


$var1 = 1;

$var2 = 2;

function test()

{

global $var1,$var2;

$var1 = &$var2; ? ? //注意這里用的符號&

}

test();

echo $var1

?>

此時這里輸出1.

在這里函數(shù)中將$var2賦值給$var1時用了&符號,指的是不僅賦值了,而且此時$var1和$var2引用的是同一個外部同名變量$var2,也就是說此時$var1引用的外部變量改變?yōu)?var2,不再是$var1.所以此時改變函數(shù)內(nèi)部$var1的值時,外部同名變量$var1的值不會改變,相反,外部同名變量$var2的值會隨著內(nèi)部$var1的值改變而改變,也會隨著內(nèi)部$var2的值改變而改變。也就是說此時外部變量$var2的值有函數(shù)內(nèi)部兩個變量$var1和$var2同時操作;

如下所示:

$var1=1;

$var2=2;

function test(){

global $var1,$var2;

$var1 = &$var2; ?//這部操作之后$var1將失去操作外部同名變量$var1的值得能力而獲得操作外部變量$var2的值的能力;

$var1 = 3;//此時外部變量$var2的值改變?yōu)?

$var2 = 4;//此時外部變量$var2的值改變?yōu)?,也就是兩個內(nèi)部變量操作外部同一個變量了

}

global test();

echo $var1;

echo $var2;

此時輸出的值$var1為1,$var2的值為4.


補(bǔ)充:unset()?銷毀指定的變量,isset()?檢測變量是否設(shè)置 ? ? ? ? 例:isset($var) ? 變量$var不存在或值為NULL,返回FALSE;其余返回TRUE;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容