PHP學(xué)習(xí)之global變量

php的變量分為三類:局部變量,全局變量应又,靜態(tài)變量
在一段php腳本中<?php >石蔗,變量可以在任意位置聲明罕邀,作用域的意思是指變量在腳本中的使用范圍。
同樣php的作用域分為三類:1养距、local(局部作用域) 2诉探、global(全局作用域) 3、static(靜態(tài)作用域)

local和global作用域

通常情況local和global作用域是容易混淆的棍厌,如何區(qū)分這兩種作用域呢肾胯?規(guī)則如下:

1、函數(shù)外部聲明的變量擁有全局作用域定铜,只能在函數(shù)外部訪問阳液。
2怕敬、函數(shù)內(nèi)部聲明的變量擁有局部作用域揣炕,只能在函數(shù)內(nèi)部訪問。

請看下面一段

<?php 
$var = '1'; //全局變量
function foo(){
    $var = '2';//局部變量
}
foo();
echo $var;
?>
很明顯打印的結(jié)果是:1

雖然兩個變量名都叫var东跪,但是確實完全不同的兩個變量畸陡,也是兩種不同的作用域鹰溜,打印出的很明顯是全局的變量。

global關(guān)鍵字

我們經(jīng)常會遇到一種情況丁恭,在函數(shù)外部聲明了一個全局變量后曹动,我們想在函數(shù)內(nèi)部訪問或者修改這一全局變量,這里我們就需要使用一個叫g(shù)lobal的關(guān)鍵字來實現(xiàn)牲览。

還用剛剛那段代碼墓陈,我們想在foo()函數(shù)內(nèi)部修改$var的值,像上面那樣寫法肯定是不行第献,

function foo(){ 
    $var = '2';//這里只是相當(dāng)于重新定義一個局部變量贡必,只不過名字恰好跟var是相同的
}

我們需要借助global關(guān)鍵字來實現(xiàn),

<?php 
$var = '1';//全局變量
function foo(){
    global $var;//在函數(shù)內(nèi)創(chuàng)建一個局部變量庸毫,使用global關(guān)鍵字使其成為全局變量的同名引用
    $var = '2';
}
foo();
echo $var;
?>
打印的結(jié)果是:2

$GLOBALS

說到global關(guān)鍵字仔拟,就不得不提$GLOBALS,$GLOBALS是超全局變量飒赃,在生成全局變量的時候利花,PHP 同時在名為 $GLOBALS的數(shù)組中存儲了所有的全局變量。

<?php 
$var = '1';//全局變量载佳,即$GLOBALS['var'] = '1'
function foo(){
    global $var; //全局變量的引用炒事,即 $var = &$GLOBALS['var']
    $var = '2';
}
foo();
echo $var;
?>

有興趣的童鞋可以打印下var_dump($GLOBALS);看看結(jié)果。
結(jié)合unset()方法會更容易理解蔫慧,看如下兩段代碼

第一段
<?php 
$var = '1';//全局變量羡洛,即$GLOBALS['var'] = '1'
function foo(){
    global $var; //全局變量的引用,即 $var = &$GLOBALS['var']
    $var = '2';
    unset($var);
}
foo();
echo $var;
?>
打印結(jié)果是:2
第而段
<?php 
$var = '1';//全局變量藕漱,即$GLOBALS['var'] = '1'
function foo(){
    global $var; //全局變量的引用欲侮,即 $var = &$GLOBALS['var']
    unset($var);
    $var = '2';
}
foo();
echo $var;
?>
打印結(jié)果是:1

因為我們知道global是生成一個全局變量的別名引用(類似于桌面上一個文件跟它的快捷方式)。引用的值修改后肋联,全局變量的值也就修改了威蕉,在第一段代碼中,修改了快捷方式的內(nèi)容橄仍,原文件的內(nèi)容也得到了修改韧涨,然后又刪除了快捷方式(unset($var);),所以結(jié)果是修改后的值侮繁。
但是在第二段代碼中虑粥,在$var = '2';之前使用了unset($var);方法銷毀了引用變量,所以導(dǎo)致全局的變量值并未修改宪哩。

再看一段代碼

<?php 
$var = '1';//全局變量娩贷,即$GLOBALS['var'] = '1'
function foo(){
    global $var; //全局變量的引用,即 $var = &$GLOBALS['var']
    unset($GLOBALS['var']);
    $var = '2';
    //或者在此調(diào)用unset($GLOBALS['var']);
}
foo();
echo $var;
?>
打印結(jié)果都是空

因為全局變量銷毀了锁孟,引用也銷毀了(原文件沒了彬祖,快捷方式也沒了)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茁瘦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子储笑,更是在濱河造成了極大的恐慌甜熔,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件突倍,死亡現(xiàn)場離奇詭異腔稀,居然都是意外死亡,警方通過查閱死者的電腦和手機羽历,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進(jìn)店門烧颖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窄陡,你說我怎么就攤上這事炕淮。” “怎么了跳夭?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵涂圆,是天一觀的道長。 經(jīng)常有香客問我币叹,道長润歉,這世上最難降的妖魔是什么踏枣? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任琴拧,我火速辦了婚禮,結(jié)果婚禮上徽缚,老公的妹妹穿的比我還像新娘贩汉。我一直安慰自己驱富,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布匹舞。 她就那樣靜靜地躺著褐鸥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赐稽。 梳的紋絲不亂的頭發(fā)上叫榕,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天,我揣著相機與錄音姊舵,去河邊找鬼晰绎。 笑死,一個胖子當(dāng)著我的面吹牛括丁,可吹牛的內(nèi)容都是我干的荞下。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锄弱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起祸憋,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤会宪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚯窥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸鹅,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年拦赠,在試婚紗的時候發(fā)現(xiàn)自己被綠了巍沙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡荷鼠,死狀恐怖句携,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情允乐,我是刑警寧澤矮嫉,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站牍疏,受9級特大地震影響蠢笋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鳞陨,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一昨寞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厦滤,春花似錦援岩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碘菜,卻和暖如春凹蜈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忍啸。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工仰坦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人计雌。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓悄晃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妈橄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內(nèi)容