區(qū)別:1、局部變量是在函數(shù)內(nèi)部定義的變量,只能在定義它的函數(shù)內(nèi)使用;而全局變量是定義在所有函數(shù)以外的變量,其作用域是當(dāng)前源碼的任何地方,但是在函數(shù)內(nèi)部是不可用的。2、局部變量會(huì)在函數(shù)調(diào)用結(jié)束時(shí)自動(dòng)銷毀,全局變量則在程序結(jié)束運(yùn)行時(shí)才會(huì)被銷毀。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
變量的作用范圍(可以被使用的范圍)稱為變量作用域,變量必須在其有效范圍內(nèi)使用,如果超出有效范圍,變量就會(huì)失去其意義。按作用域可以將 PHP 變量分為全局變量和局部變量兩種。
可以在當(dāng)前源碼中任何地方(函數(shù)外部)使用的變量稱為全局變量,它們具有全局作用域;只能在對(duì)其進(jìn)行定義的函數(shù)內(nèi)部使用的變量稱為局部變量,它們具有局部作用域。
在 PHP 中,全局變量不能直接在函數(shù)內(nèi)部使用;而局部變量也不能直接在函數(shù)外部使用。當(dāng)然這也不是絕對(duì)的,通過一些方法還是可以實(shí)現(xiàn)在函數(shù)內(nèi)調(diào)用全局變量、在函數(shù)外調(diào)用局部變量的,這些我們會(huì)在后面的學(xué)習(xí)中介紹。
局部變量與局部作用域
局部變量就是在函數(shù)的內(nèi)部定義的變量,它只能在定義它的函數(shù)內(nèi)使用。局部變量會(huì)在函數(shù)調(diào)用結(jié)束時(shí)自動(dòng)銷毀。
【示例】下面定義一個(gè)名為 example 的函數(shù),并在函數(shù)內(nèi)部定義一個(gè)局部變量 a,然后分別在該函數(shù)內(nèi)部及函數(shù)外部嘗試輸出變量 a 的值,具體代碼如下:
<?php header("Content-type:text/html;charset=utf-8"); function example() { $a = "歡迎來到PHP中文網(wǎng)!"; // 在函數(shù)內(nèi)定義變量 a echo "局部變量 a 的值為:" . $a . "<br>"; } example(); if ($a) {// 在函數(shù)外部調(diào)用 $a,如果 $a 存在則會(huì)打印下面的內(nèi)容 echo "在函數(shù)外部調(diào)用函數(shù)內(nèi)的局部變量 a,其值為:" . $a; } ?>
運(yùn)行結(jié)果如下:
通過運(yùn)行結(jié)果可以看出,在函數(shù)外部并不能調(diào)用函數(shù)內(nèi)部定義的局部變量,因?yàn)榫植孔兞?$a 的作用域是定義它的 example() 函數(shù),在函數(shù)以外的地方無法使用。
全局變量與全局作用域
全局變量就是定義在所有函數(shù)以外的變量,其作用域是當(dāng)前源碼的任何地方,但是在函數(shù)內(nèi)部是不可用的。在程序運(yùn)行期間全局變量會(huì)一直存在,只有程序結(jié)束運(yùn)行時(shí)才會(huì)被銷毀。
【示例】定義一個(gè)全局變量 a,并分別在函數(shù)內(nèi)部和外部輸出全局變量的值,具體代碼如下:
<?php header("Content-type:text/html;charset=utf-8"); $a = "歡迎來到PHP中文網(wǎng)!"; // 在函數(shù)外部定義全局變量 a function example() { if ($a) { echo "在函數(shù)內(nèi)部調(diào)用全局變量 a,其值為:" . $a; } } example(); echo "在函數(shù)外部調(diào)用全局變量 a,其值為:" . $a; ?>
運(yùn)行結(jié)果如下:
通過運(yùn)行結(jié)果可以看出,在函數(shù)內(nèi)部并沒有成功調(diào)用到 $a,但是在函數(shù)外部可以。
推薦學(xué)習(xí):《PHP視頻教程》