這篇文章主要介紹“PHP中的變量類型和作用域詳解”,在日常操作中,相信很多人在PHP中的變量類型和作用域詳解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP中的變量類型和作用域詳解”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
成都創(chuàng)新互聯(lián)主要從事成都網站設計、網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務新城,十年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575PHP中變量的作用域可以分為:超全局(全局變量的特殊類型,在局部范圍里可直接使用),全局,局部,靜態(tài)(是局部變量的特殊類型)
在PHP中,全局變量實際上是靜態(tài)全局變量,如果不用unset顯式的釋放,那么等腳本運行結束全局變量才會被釋放掉
局部靜態(tài)變量細分可以是 局部靜態(tài)函數(shù)變量(函數(shù)中聲明的static變量),局部靜態(tài)成員變量(類中聲明的 static 屬性,被所有類實例共享)
局部靜態(tài)變量只有腳本運行結束才會被自動釋放
超全局變量:在一個腳本的任何作用域里都可以被訪問,這些都是PHP內置的
復制代碼 代碼如下:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_SESSION(持久化存儲)
$_COOKIE(持久化存儲)
$_REQUEST
$_ENV
全局變量:聲明的變量不在class,function,if等語言結構內部,如果要在class,function,if等語言內部使用,需要用關鍵詞global或者超全局變量$GLOBALS
靜態(tài)變量: 在function中使用關鍵詞static聲明的變量,靜態(tài)變量的值保留直至腳本結束
局部變量:在class,function,if/while/for等結構語句內部聲明的變量
1.global關鍵詞和$GLOBALS實例
復制代碼 代碼如下:
$a = 0;
function foo()
{
global $a;
echo $a;
}
function foo2()
{
echo $GLOBALS['a'];
}
2.static 變量和普通局部變量區(qū)別實例
復制代碼 代碼如下:
function foo1()
{
$var = 0;
$var++;
return $var;
}
echo foo1();
echo foo1();
//輸出都是1
function foo ()
{
static $var = 0;
$var++;
return var;
}
echo foo();
echo foo();
//第一次輸出1 第二次2
3.static 關鍵詞還可以聲明靜態(tài)屬性和靜態(tài)方法
靜態(tài)屬性只能被類調用,而不能被類實例調用
靜態(tài)方法里不能使用$this,只能用self訪問類的靜態(tài)屬性
另外理解static變量的一段代碼:
復制代碼 代碼如下:
class t
{
static $v = 10;
public function a()
{
static $var = 10;
$var++;
echo $var . "
\n";
}
public static function aa()
{
self::$v++;
echo self::$v . "
\n";
}
}
$o1 = new t();
$o1->a();//輸出11
$o2 = new t();
$o2->a();//輸出12
t::aa();//輸出11
$o1->aa();//輸出12
$o2->aa();//輸出13
從上面的代碼中,可知如果一個類成員方法中有靜態(tài)變量,即使是不同的類實例,他們也會共享這個靜態(tài)變量,盡管這個靜態(tài)變量不是類靜態(tài)成員變量,這點容易讓人迷惑。
到此,關于“PHP中的變量類型和作用域詳解”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享文章:PHP中的變量類型和作用域詳解-創(chuàng)新互聯(lián)
網頁路徑:http://weahome.cn/article/pdieh.html