1. 程式人生 > >php學習筆記-變量的作用域

php學習筆記-變量的作用域

為什麽 解析 () 兩種 我們 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學習筆記-變量的作用域