程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP Global變量定義一些用法詳解

PHP Global變量定義一些用法詳解

編輯:關於PHP編程

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


 代碼如下 復制代碼

<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b; //在裡面聲明為全局變量
$b = $a + $b;
}
Sum();
echo $b;
?>

結果: 3
如果沒有全局變量global在方法內是不能獲得$a,$b值的,所以在方法裡面想用外面的變量就需要先聲明這個變量為全局變量,這樣就可以使用了

總結:在函數體內定義的PHP Global變量,函數體外可以使用,在函數體外定義的global變量不能在函數體內使用,

$glpbal $a; $a=123; function f() { echo $a; //錯誤, }

再看看下面一例

 代碼如下 復制代碼

function f()
{
global $a;
$a=123;
}
f();
echo $a; //正確,可以使用

在用戶自定義函數中,一個局部函數范圍將被引入。任何用於函數內部的變量按缺省情況將被限制在局部函數范圍內(包括include 和 require 導入的文件內的變量)!
解釋:A.php文件的內Test_Global是定義好的第三方函數,該函數用include導入了B.php文件內的$a的global全局變量,所以$a被限制在Test_Global局部函數范圍內,所以B.php文件內的$a的作用范圍都在Test_Global內,而不是作用了整個A.php內….
解決方案:
1. 沖出局部函數
 //A.php 文件

 代碼如下 復制代碼

<?php
function Test_Global()

    Test(); 

include 'B.php';   //將include 從局部Test_Global函數中移出
$a = 0 ;
Test_Global();
echo $a;
?>
//B.php 文件
<?php
function Test()
{
    global $a;
    $a =1;
}
?>

2.優秀的訪問器

 代碼如下 復制代碼

//A.php 文件
<?php
include 'B.php';
$a =0;
Set_Global($a);
echo $a;
?>
//B.php 文件
<?php
function Set_Global(&$var)
{
    $var=1;
}
?>

再來看看$GLOBALS[]

 代碼如下 復制代碼


$var1 = 1; 
$var2 = 2; 
function test1(){ 
     $GLOBALS['var2'] = &$GLOBALS['var1']; 

test1(); 
echo $var2;  //1

$var3 = 1; 
$var4 = 2; 
function test2(){ 
     global $var3,$var4; 
     $var4 = &$var3; 

test2(); 
echo $var4;  

 //2 為什麼$var2的打印結果是1,而$var4的打印結果為2呢?其實就是因為$var3的引用指向了$var4的引用地址。$var4的實際值並沒有改變。官方的解釋是:$GLOBALS['var']是外部的全局變量本身,global $var是外部$var的同名引用或者指針。

也許這個例子還不是很清晰,我再引入一個例子:

 代碼如下 復制代碼


$var1 = 1; 
function test1(){ 
     unset($GLOBALS['var1']); 

test1(); 
var_dump($var1);   //NULL

$var2 = 1; 
function test2(){ 
    global  $var2; 
     unset($var2); 

test2(); 

echo $var2;   //1 $var1的值被刪除,而$var2的值還存在。這就證明,$var2只是別名引用,本身的值沒有受到任何的改變。也就是說global $var其實就是$var = &$GLOBALS['var'],調用外部變量的一個別名而已!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved