PHP面試中變量作用域是面試中常常出現(xiàn)的問題,也是必考的問題,下面就給大姐講解一下在面試中注意的點(diǎn):
# living example one
$A="Hello ";
functionprint_A()
{
$A = "phpmysql !!";
global $A;
//global 全局變量 函數(shù)是獨(dú)立的模塊 $A外界定義的
echo $A;
}
echo $A; //output Hello
print_A(); //out pot Hello
在你將$A定義為全局變量的時候,并未修改$A的值
考點(diǎn):
局部變量和全局變量的作用域,函數(shù)外部變量為全局變量(本頁面以及引入頁面),函數(shù)內(nèi)部變量為局部變量
易錯點(diǎn):
答題者區(qū)分不清局部變量和全局變量的概念,導(dǎo)致不能準(zhǔn)確寫出函數(shù)輸出結(jié)果
分析:
1)局部變量只能在函數(shù)內(nèi)部產(chǎn)生作用以及被使用,無論外部怎么修改都將失效,這樣也就保證了我們在同一個頁
面定義相同名稱的變量時候不會出現(xiàn)異常
2)全局適用于多個函數(shù)以及多個頁面都需要用到時可聲明,這樣也就能節(jié)省內(nèi)存空間,但是應(yīng)用時重復(fù)定義被覆
蓋導(dǎo)致異常的問題也要注意
# living example two
function test(){
$num = 10;
echo $num;
}
test(); //output 10
echo $num;
$num = $num+10;
echo $num;
分析:
以上代碼會導(dǎo)致一個變量未定義的waring,我們尚且忽略
1)$num是一個局部變量,那么你在函數(shù)內(nèi)部輸出,并且調(diào)用函數(shù)方法時候會輸出10,但是無論你在外面怎么操作
$num這個變量兩者都不是同一個變量,因此也不會產(chǎn)生實質(zhì)性的效果