首頁  >  文章  >  後端開發  >  php 中global關鍵字和$GLOBALS用法

php 中global關鍵字和$GLOBALS用法

怪我咯
怪我咯原創
2017-06-19 16:04:485936瀏覽

首先我們先看一段程式碼

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

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

Test ();
?>

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

global 關鍵字

首先,一個使用 global 的例子,程式碼如下:

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

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

     $b  =  $a  +  $b ;
}

Sum ();
echo  $b ;
?>

以上腳本的輸出將是「3」。在函數中宣告了全域變數 $a 和 $b 之後,對任一變數的所有引用都會指向其全域版本。對於函數能夠宣告的全域變數的最大個數,PHP 沒有限制。

在全域範圍內存取變數的第二個方法,是用特殊的 PHP 自訂 $GLOBALS 陣列。前面的例子可以寫成:

Example #2 使用 $GLOBALS 取代 global,程式碼如下:

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

function  Sum ()
{
     $GLOBALS [ &#39;b&#39; ] =  $GLOBALS [ &#39;a&#39; ] +  $GLOBALS [ &#39;b&#39; ];
}

Sum ();
echo  $b ;
?>

$GLOBALS 是一個關聯數組,每個變數為一個元素,鍵名對應變數名,值對應變數的內容。 $GLOBALS 之所以在全域範圍內存在,是因為 $GLOBALS 是一個超全域變數。以下範例顯示了超全域​​變數的用處:

Example #3 示範超全域變數和作用域的範例

<?php
function  test_global ()
{
     // 大多数的预定义变量并不 "super",它们需要用 &#39;global&#39; 关键字来使它们在函数的本地区域中有效。
     global  $HTTP_POST_VARS ;
    echo  $HTTP_POST_VARS [ &#39;name&#39; ];
     // Superglobals 在任何范围内都有效,它们并不需要 &#39;global&#39; 声明。Superglobals 是在 PHP 4.1.0 引入的。
     echo  $_POST [ &#39;name&#39; ];
}
?>

以上是php 中global關鍵字和$GLOBALS用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn