PHP基礎筆記函數global變數_PHP教程

來源:互聯網
上載者:User
global在php是全域變數了,這個global只是頁面全域變數,如函數之外的變數我們可以在函數中直接使用global申明就可以擷取變數的值了。

代碼如下 複製代碼

$a=12;


function fn()
{
global $a;//使用外層$a變數,不使用這個方法$a為局部變數
$a+=12;
}

echo '$a='.$a//輸出結果

?>

輸出的結果:$a=24


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

代碼如下 複製代碼

$glpbal $a;
$a=123;

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

//再看看下面一例

function f()
{
global $a;
$a=123;
}

f();
echo $a; //正確,可以使用

上面的執行個體只是基本的global全域變數知識,下面我們看看複雜點的:

代碼如下 複製代碼

//A.php 檔案

function Test_Global()
{
include 'B.php';
Test();
}

$a = 0 ;
Test_Global();
echo $a;
?>

//B.php 檔案

function Test()
{
global $a;//申明函數體Sum內使用的$a變數為global全域變數
$a =1;
}
?>

為什麼輸出的卻是0?!!

在使用者自訂函數中,一個局部函數範圍將被引入。任何用於函數內部的變數按預設情況將被限制在局部函數範圍內(包括include 和 require 匯入的檔案內的變數)!
解釋:A.php檔案的內Test_Global是定義好的第三方函數,該函數用include匯入了B.php檔案內的$a的global全域變數,所以$a被限制在Test_Global局部函數範圍內,所以B.php檔案內的$a的作用範圍都在Test_Global內,而不是作用了整個A.php內….

解決方案:

1. 衝出局部函數

代碼如下 複製代碼

//A.php 檔案

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

//B.php 檔案

function Test()
{
global $a;
$a =1;
}
?>

global問題解析:

question:我在config.inc.php中定義了一些變數($a),在別的檔案中函數外部 include("config.inc.php"),函數內部需要使用這些變數$a,如果沒有聲明的話,echo $a是列印不出來任何東西的。因此聲明global $a,但是有很多函數和很多變數,總不能不斷重複的這樣聲明吧?有什麼好的解決辦法,請指點。
answer1:先在config.inc.php裡定義常量:define(常量名,常量值)
再在其他需要用到的地方require 'config.inc.php',
然後就能在這個檔案裡直接使用這個常量了。
answer2:我也有個辦法,就是定義數組,如$x[a],$x,那樣就只要聲明global $x一個了。
answer3:我試了你的這個方法,不行啊。
answer4:改你的php.ini檔案。

http://www.bkjia.com/PHPjc/632627.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632627.htmlTechArticleglobal在php是全域變數了,這個global只是頁面全域變數,如函數之外的變數我們可以在函數中直接使用global申明就可以擷取變數的值了。 例...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.