PHP中的全局變量global和$GLOBALS的區別


1.global

  Global的作用是定義全局變量,但是這個全局變量不是應用於整個網站,而是應用於當前頁面,包括include或require的所有文件。

  但是在函數體內定義的global變量,函數體內可以使用,在函數體外定義的global變量不能在函數體內使用,具體看下面示例。

(1)在函數體內定義global變量,函數體內可以使用。

<?PHP 
$a=123; 
function aa() 
{ 
Global $a; //把$a定義為global變量。 
echo $a; //調用函數體外的變量
} 
aa(); //輸出結果為123,說明函數體內可以使用函數體外的變量;
?>

(2)在函數體外定義global變量,函數體內不可以使用。

<?PHP 
$a=123; 
Global $a; //在函數體外把$a定義為global變量。 
function aa() 
{  
  echo $a; 
} 
aa();//會報錯,不能輸出變量a。
?>

2.$GLOBALS

  在 $GLOBALS 數組中,每一個變量為一個元素,鍵名對應變量名,值對應變量的內容。$GLOBALS 之所以在全局范圍內存在,是因為 $GLOBALS 是一個超全局變量。注意$GLOBALS 的寫法,比如變量$a1,寫法為$GLOBALS['a1']。

示例:先使用global定義

<?PHP 
$a1 = 1; 
$a2 = 2; 
function Sum() 
{ 
  global a1, a2;a2 = a1 + a2; //定義變a1和a2;
}
Sum(); 
echo a2; //輸出結果為3
?>

使用$GLOBALS定義全局變量

<?PHP 
$a1 = 1; 
$a2 = 2;
function Sum() 
{ 
  $GLOBALS['a1'] = $GLOBALS['a1'] + $GLOBALS['a2']; //定義變量時每個都要定義
}
Sum(); 
echo a2; //輸出結果為2
?>

例1:

function test() 
{ 
    global $a;//定義全局變量a 
    unset($a); //刪除變量a
    //print $a;//會報錯,因為unset已經把$a刪除了。 
} 
$a = 2; //定義一個變量a
test(); //調用test()方法
print $a; //輸出a,輸出的其實是$a = 2,所以結果為2.

例2:

function test_global() 
{ 
    global $var1, $var2; 
    $var2 =& $var1; 
} 
function test_globals() 
{ 
    $GLOBALS['var3'] =& $GLOBALS['var1']; 
} 
$var1 = 5; 
$var2 = $var3 = 0; 

test_global(); 
print $var2; //輸出結果為0

test_globals(); 
print $var3; //輸結果為5

 


免責聲明!

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



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