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


這個東西很難理解,但很重要,我覺得非常容易出錯。

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 ?>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM