|
一、實(shí)現(xiàn)原理
在php的函數(shù)中,global語(yǔ)法是比較常見的,大家一定都知道一旦在函數(shù)中g(shù)lobal了某個(gè)外部變量后,這個(gè)變量就可以在這個(gè)函數(shù)中使用了,但是也有不少網(wǎng)友不知道這是一個(gè)什么實(shí)現(xiàn)原理?,F(xiàn)在上一個(gè)例子,大家一看就知道了:
復(fù)制代碼 代碼如下:
$globalStr = '.NET';
function globalTest(){
global $globalStr;
$globalStr = 'jb51'.$globalStr;
unset($globalStr);
}
globalTest();
echo $globalStr; //輸入: jb51.NET
從這個(gè)例子看出global了一個(gè)變量就等于傳遞了一個(gè)引用進(jìn)來。這樣理解的話,下面的代碼輸出結(jié)果就不難理解了。
二、php中g(shù)lobal的作用
復(fù)制代碼 代碼如下:
global $var1,$var2;
就是外部變量的同名引用,變量本身的作用范圍仍然在函數(shù)體內(nèi)。改變這些變量的值,外部的同名變量自然也改變。但一旦用了&,那么變量將不再是同名引用。
復(fù)制代碼 代碼如下:
<?php
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2; // 作用范圍在函數(shù)體內(nèi)
$var1 = 3;
}
test();
echo $var1;
?>
結(jié)果是 3。因?yàn)槭峭谩?br /> 復(fù)制代碼 代碼如下:
<?
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2;
$var1 = &var2;
}
test();
echo $var1
?>
結(jié)果是1。因?yàn)樵诤瘮?shù)內(nèi)的$var1經(jīng)過賦值后與$var2具有相同的引用了。進(jìn)一步看下面的代碼。
復(fù)制代碼 代碼如下:
<?php
$var1 = 1;
$var2 = 2;
function test_global()
{
global $var1,$var2;
$var1=&$var2;
$var1=7;
}
test_global();
echo $var1;
echo $var2;
?>
結(jié)果是1和7。因?yàn)樵诤瘮?shù)內(nèi)的$var1與$var2具有相同的引用。因此改變了$var1的值,$var2的值夜作了改變。
php技術(shù):深入理解PHP中的global,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。