PHP 中的每個變數都有一個針對它的作用域,它是指可以在其中存取變數(從而存取它的值)的一個領域。
對初學者來說,變數的作用域是它們所駐留的頁面。因此, 如果你定義了 $var,頁面餘下部分就可以存取 $var,但是,其它頁面一般不能訪問它(除非使用特殊的變數)。 (建議學習:PHP程式設計從入門到精通)
因為包含檔案像它們是原始(包含)腳本的一部分那樣工作,所以在include() 那一行之前定義的變量可供包含文件使用。此外,包含檔案內定義的變數可供 include() 那一行之後的父(包含)腳本使用。
當使用你自己定義的函數時,所有這些都會變得不那麼明顯。這些函數具有它們自己的作用域,這意味著在一個函數內使用的變數不能在其外部使用,在一個函數 外部定義的變數不能在其內部使用。由於這個原因,函數內部的變數可以具有與其外部的變數相同的名稱,但是它們仍然是完全不同的變量,並且具有不同的值。對 大多數初級程式設計師來說,這是一個使人糊塗的概念。
要改變一個函數內的變數的作用域,可以使用 global 語句。
<?php function function_name() { global $var; } $var = 20; function_name(); // Function call. ?>
在這個範例中,函數內部的 $var 現在與函數外部的 $var 相同。這表示變數 $var 已經有一個值20,如果在函數內部改變了這個值,外部的 $var 值也會改變。
避開變數作用域的另一個方法是利用超全域變數:$_GET、$_POST、$_REQUEST 等。這些變數在你的函數內是自動可存取的(因此,它們是超全域變數)。也可以將元素添加到 $GLOBALS 陣列中,使得可以在函數內使用它們。
也就是說,最好不要在函數內使用全域變數。在設計函數時,應該使它們根據需要接受每個值作為參數,並根據需要傳回任何值。依靠函數內的全域變數將使得它們更依賴上下文,因而不太有用。
常數一旦被宣告將可以在全域可見,也就是說,它們可以函數內外使用,但是這僅限於一個頁面之中(包含我們透過include和include_once)包含進來的PHP腳本,但是在其他的頁面中就不能使用了。
以上是php常數的作用域的詳細內容。更多資訊請關注PHP中文網其他相關文章!