php的變量作用域

  原文地址:http://wordpress.njustjx.cn/index.php/archives/193

 

PHP 中的每個變量都有一個針對它的作用域,它是指可以在其中訪問變量(從而訪問它的值)的一個領域。對於初學者來說,變量的作用域是它們所駐留的頁面。因此, 如果你定義了 $var,頁面餘下部分就可以訪問 $var,但是,其它頁面一般不能訪問它(除非使用特殊的變量)。
  因爲包含文件像它們是原始(包含)腳本的一部分那樣工作,所以在 include() 那一行之前定義的變量可供包含文件使用。此外,包含文件內定義的變量可供 include() 那一行之後的父(包含)腳本使用。
  當使用你自己定義的函數時,所有這些都將變得不那麼明顯。這些函數具有它們自己的作用域,這意味着在一個函數內使用的變量不能在其外部使用,在一個函 數外部定義的變量不能在其內部使用。由於這個原因,函數內部的變量可以具有與其外部的變量相同的名稱,但是它們仍然是完全不同的變量,並且具有不同的值。 對於大多數初級程序員來說,這是一個使人糊塗的概念。
  要改變一個函數內的變量的作用域,可以使用 global 語句。
function function_name() {
 global $var;
}
$var=20;
function_name(); // Function call.

  在這個示例中,函數內部的 $var 現在與函數外部的 $var 相同。這意味着變量 $var 已經具有一個值20,如果在函數內部改變了這個值,外部的 $var 值也會改變。
  避開變量作用域的另一個方法是利用超全局變量:$_GET、$_POST、$_REQUEST 等。這些變量在你的函數內是自動可訪問的(因此,它們是超全局變量)。也可以添加元素到 $GLOBALS 數組中,使得可以在函數內使用它們。
  也就是說,最好不要在函數內使用全局變量。在設計函數時,應該使它們根據需要接受每個值作爲參數,並根據需要返回任何值。依靠函數內的全局變量將使得它們更依賴於上下文,因而不太有用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章