PHP面試常考易錯題之變數作用域解析
09-25
PHP面試常考易錯題之變數作用域解析
來自專欄 PHP高級開發
living example one
$A="Hello "; functionprint_A() { $A = "phpmysql !!";global $A; //global 全局變數 函數是獨立的模塊 $A外界定義的echo $A;}echo $A; //output Helloprint_A(); //out pot Hello 在你將$A定義為全局變數的時候,並未修改$A的值
考點:
局部變數和全局變數的作用域,函數外部變數為全局變數(本頁面以及引入頁面),函數內部變數為局部變數易錯點:
答題者區分不清局部變數和全局變數的概念,導致不能準確寫出函數輸出結果
分析:
1)局部變數只能在函數內部產生作用以及被使用,無論外部怎麼修改都將失效,這樣也就保證了我們在同一個頁
面定義相同名稱的變數時候不會出現異常2)全局適用於多個函數以及多個頁面都需要用到時可聲明,這樣也就能節省內存空間,但是應用時重複定義被覆
蓋導致異常的問題也要注意living example two
function test(){ $num = 10; echo $num;}test(); //output 10echo $num; $num = $num+10;echo $num;
分析:
以上代碼會導致一個變數未定義的waring,我們尚且忽略1)$num是一個局部變數,那麼你在函數內部輸出,並且調用函數方法時候會輸出10,但是無論你在外面怎麼操作
$num這個變數兩者都不是同一個變數,因此也不會產生實質性的效果
推薦閱讀:
※絲帶範疇
※怎樣上好一節數學課
※泰勒級數——小無相功
※利用ComplexHeatmap繪製熱圖(一)
※Tauber定理·初探