php學習筆記-變量的作用域
阿新 • • 發佈:2018-02-18
為什麽 解析 () 兩種 我們 function 理解 spa 如果
這個東西很難理解,但很重要,我覺得非常容易出錯。
PHP中的變量按照作用域分為有兩種,一種是global,一種是local。
函數內部聲明的變量就叫local型變量,只能在函數內部被訪問到。一句話,local型變量只能在函數內部定義以及引用。
函數外部聲明的變量叫global型變量,只能在函數的外部訪問到(除了GLOBALS)。這種渣渣也能叫global,真是名不副實啊!我記得以前學習過的語言不是這個樣子的,只要是global,函數外還是函數內都可以訪問到的,但php就是這麽難搞。
我們看一個local的例子。
1 <?php 2 3 $name = ‘hanmeimei‘;4 function getName(){ 5 echo $name; 6 } 7 8 getName(); 9 10 ?>
運行結果顯示$name這個變量沒有被定義。是因為php解析器沒有在getName函數內部找到$name這個變量的定義。為啥不去外面找去啊,如果沒有特別的聲明,函數內部引用到的變量只會在函數內部去找它的定義。
那怎麽才能訪問到外面的name呢?
我們看一個global的例子。
1 <?php 2 $name = "hanmeimei"; 3 function getName(){ 4 global $name; 5 echo$name; 6 } 7 getName(); 8 ?>
這回就沒有錯誤提示了,為什麽呢?是因為在getName函數內部有一句global $name,它的意思是告訴PHP解析器$name這個變量的定義你得在函數外面找,然後就找到了$name的值是hanmeimei。變量前面的global使得$name這個global型變量的作用範圍擴大到了getName函數內部。
前面有句話:函數外部聲明的變量叫global型變量,只能在函數的外部訪問到,這是什麽意思?
1 <?php 2 $name = ‘hanmeimei‘; 3 echo $name; 4 ?>
php學習筆記-變量的作用域