韌館-LearnHouse

[PHP]全域變數-global

內容來源:Link    (此篇文章僅供站長備份參考用,固為加密文章)

變數的範圍即它定義的上下文背景(譯者:說白了,也就是它的生效範圍)。大部分的 PHP 變數只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了 include 和 require 引入的文件。範例:

<?php
$a = 1;
include "b.inc";
?>

這裡變數 $a 將會在包含文件 b.inc 中生效。但是,在用戶自定義函式中,一個局部函式範圍將被引入。任何用於函式內部的變數按預設情況將被限制在局部函式範圍內。範例:

<?php
$a = 1; /* global scope */

function Test()
{
echo $a; /* reference to local scope variable */
}

Test();
?>

這個腳本不會有任何輸出因為 echo 語句引用了一個局部版本的變數 $a, 而且在這個範圍內,它並沒有被設值。你可能注意到 PHP 的全域變數和 C 語言有一點點不同,在 C 語言中,全域變數在函式中自動生效,除非被局部變數覆蓋。這可能引起一些問題,有些人可能漫不經心的改變一個全域變數。 PHP 中全域變數在函式中使用時必須申明為全域。例如:

<?php
$a = 1;
$b = 2;

function Sum()
{
global $a, $b;

$b = $a + $b;
}

Sum();
echo $b;
?>

以上腳本的輸出將是 "3"。在函式中申明了全域變數 $a$b,任何變數的所有引用變數都會指向到全域變數。對於一個函式能夠申明的全域變數的最大個數,PHP 沒有限制。

在全域範圍內連接變數的第二個辦法,是用特殊的 PHP 自定義 $GLOBALS 陣列。前面的例子可以寫成:

<?php
$a = 1;
$b = 2;

function Sum()
{
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}

Sum();
echo $b;
?>

$GLOBALS 陣列中,每一個變數為一個元素,鍵名對應變數名,值變數的內容。$GLOBALS 之所以在全域範圍內存在,是因為 $GLOBALS 是一個 superglobal 變數。

2007年9 月 posted by admin in 程式&軟體 and have No Comments

Place your comment

Please fill your data and comment below.
名稱:
信箱:
網站:
您的評論: