變量作用域

在做網(wǎng)站中變量都必須在有效的范圍內(nèi)使用,如果超出有效范圍,則變量就失去意義。變量的作用域如下表所示。

網(wǎng).jpg

例如,在下面示例中,函數(shù)體內(nèi)是無(wú)法引用全局變量的。

<?php$a = 1;         //聲明全局變量function test(){    echo $a;    //引用全局變量,則無(wú)效}test();         //調(diào)用函數(shù),顯示為空?>

但是,如果在函數(shù)體使用global關(guān)鍵字聲明變量之后,則可以在函數(shù)內(nèi)引用全局變量。

<?php$a = 1;          //聲明全局變量function test(){    global $a;   //聲明全局變量    echo $a;     //引用全局變量,有效}test();          //調(diào)用函數(shù),顯示為1?>

靜態(tài)變量?jī)H在局部函數(shù)域中存在,但當(dāng)程序執(zhí)行離開(kāi)此作用域時(shí),其值并不會(huì)丟失。例如,在下面示例中靜態(tài)變量$count能夠持續(xù)存儲(chǔ)現(xiàn)在疊加的值。

<?phpfunction test(){    static $count = 0;   //聲明靜態(tài)變量    $count++;            //遞加變量值echo $count;         //顯示變量值    if ($count < 10) {   //如果變量值小于10,則繼續(xù)調(diào)用函數(shù)        test();    }}test();                  //調(diào)用函數(shù)echo "<p>";test();                  //第二次調(diào)用函數(shù)?>

靜態(tài)變量提供了一種處理遞歸函數(shù)的方法。遞歸函數(shù)是一種調(diào)用自己的函數(shù),用戶在寫遞歸函數(shù)時(shí)要小心,因?yàn)榭赡軙?huì)無(wú)窮遞歸下去,所以必須確保有充分的方法來(lái)中止遞歸。這個(gè)簡(jiǎn)單的函數(shù)遞歸計(jì)數(shù)到10,使用靜態(tài)變量$count來(lái)判斷何時(shí)停止,當(dāng)時(shí)即便函數(shù)中止,如果繼續(xù)調(diào)用函數(shù),用戶會(huì)發(fā)現(xiàn)$count的值是從11開(kāi)始的,而不是0,演示效果如下圖所示。

網(wǎng)2.jpg

網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷咨詢專線:0871-63535511(點(diǎn)擊可一鍵撥號(hào))