php的全域性p變數程式 PHP 全域性變數

2021-10-13 11:24:08 字數 2297 閱讀 9089

執行**的結果是:my name is why,而不是執行changename()後顯示what。分析原因,這是因為函式體changename內$name變數被預設設定為區域性變數,$name的作用域就是在changename內。於是,修改**,新增全域性變數如下:

global $name;

$name = "why";

functionchangename(){

$name = "what";

changename();

echo "my name is " . $name . "

";注意:不能在用global宣告變數的同時給變數賦值。像global $name = "why"的使用方式是錯誤的。

定義全域性變數後執行的結果仍然為my name is why,這個結果讓我吃驚。原來,global的正確用法是:"在乙個函式中引入外部的乙個變數,如果該變數沒有通過引數傳遞進來,那麼就通過global引入進來。" 也就是說,當乙個函式引用乙個外部變數時,可以在函式內通過global來宣告該變數,這樣該變數就可以在函式中使用了(相當於當作引數傳遞進來)。那麼,再次修改**:

$name = "why";

functionchangename(){

global $name;

$name = "what";

changename();

echo "my name is " . $name . "

";這次的執行結果是:my name is what,說明global是起傳遞引數的作用,而並非使變數的作用域為全域性。再看下面的例子:

$name = "why";

functionchangename(){

global $name;

$name = "what";

functionchangename2(){

$name = "where";

changename();

changename2();

echo "my name is " . $name . "

";執行結果為:my name is what,如果在changename2()中新增global $name,執行結果則是:my name is where。

綜上,global的作用就相當於傳遞引數,在函式外部宣告的變數,如果在函式內想要使用,就用global來宣告該變數,這樣就相當於把該變數傳遞進來了,就可以引用該變數了。

除了使用global引數定義外,還可以使用超全域性變數$global:

$name = "why";

functionchangename(){

$globals['name'] = "what";

changename();

echo "my name is " . $name . "

";二 global和$global

乙個例子:

$var1 = 1;

$var2 = 2;

functiontest1(){

$globals['var2'] = &$globals['var1'];

test1();

echo $var2 . "

";$var3 = 1;

$var4 = 2;

functiontest2(){

global $var3,$var4;

$var4 = &$var3;

test2();

echo $var4 . "

";輸出$var2的值為1,$var4的值為2,因為$var3的引用指向了$var4的引用位址。$var4的實際值並沒有改變。官方的解釋是:$globals['var']是外部的全域性變數本身,global $var是外部$var的同名引用或者指標。意味著$global在乙個指令碼的全部作用域中都可用,在函式或方法中無需執行global $variable; 就可以訪問它們。與所有其他超全域性變數不同,$globals在php中總是可用的。另乙個例子:

$var1 = 1;

functiontest1(){

unset($globals['var1']);

test1();

echo $var1 . "

";$var2 = 1;

functiontest2(){

global $var2;

unset($var2);

test2();

echo $var2;

輸出結果是$var1不存在,而$var2的值為1。這就證明,$var2只是別名引用,本身的值沒有受到任何的改變。也就是說global $var其實就是$var = &$globals['var'],呼叫外部變數的乙個別名而已!

PHP 全域性變數

全域性變數用關鍵字 global,如宣告乙個全域性變數 global x 函式之外宣告的變數具有global作用域,只能在函式之外進行訪問 函式之內宣告的變數具有local作用域,只能在函式之內進行訪問 如果全域性變數要在函式之內進行訪問,需要在變數前加global,例如 x 5 全域性作用域 fu...

php 全域性變數

描述 php中把定義在函式 類之外的變數稱之為全域性變數,也就是定義在主指令碼中的變數,這些變數可以在函式 成員方法中通過global關鍵字引入使用。1 function test 56 id 1 7test 8echo id 儲存 全域性變數在整個請求執行期間始終存在,它們儲存在eg symbol...

php的類有全域性變數嗎 php 全域性變數

描述 php中把定義在函式 類之外的變數稱之為全域性變數,也就是定義在主指令碼中的變數,這些變數可以在函式 成員方法中通過global關鍵字引入使用。1 functiontest 5 6 id 1 7 test 8 echo id 儲存全域性變數在整個請求執行期間始終存在,它們儲存在eg symbo...