php全域性變數的使用方法:可以在函數內通過global來宣告該變數,程式碼為【$name = "why";function changeName(){global $name;$name = "what";}】。
php全域性變數的使用方法:
1、全域性變數的global的定義和使用
最初,我的需求是這樣的:
<?php $name = "why"; function changeName(){ $name = "what"; } changeName(); echo "my name is " . $name . "<br/>"; ?>
執行程式碼的結果是:my name is why,而不是執行changeName()後顯示what。分析原因,這是因為函數體changeName內$name變數被預設設定為區域性變數,$name的作用域就是在changeName內。於是,修改程式碼,新增全域性變數如下:
<?php global $name; $name = "why"; function changeName(){ $name = "what"; } changeName(); echo "my name is " . $name . "<br/>"; ?>
注意:不能在用global宣告變數的同時給變數賦值。像global $name = "why"的使用方式是錯誤的。
定義全域性變數後執行的結果仍然為my name is why,這個結果讓我吃驚。原來,global的正確用法是:"在一個函數中引入外部的一個變數,如果該變數沒有通過引數傳遞進來,那麼就通過global引入進來。" 也就是說,當一個函數參照一個外部變數時,可以在函數內通過global來宣告該變數,這樣該變數就可以在函數中使用了(相當於當作引數傳遞進來)。那麼,再次修改程式碼:
<?php $name = "why"; function changeName(){ global $name; $name = "what"; } changeName(); echo "my name is " . $name . "<br/>"; ?>
這次的執行結果是:my name is what,說明global是起傳遞引數的作用,而並非使變數的作用域為全域性。再看下面的例子:
<?php $name = "why"; function changeName(){ global $name; $name = "what"; } function changeName2(){ $name = "where"; } changeName(); changeName2(); echo "my name is " . $name . "<br/>"; ?>
執行結果為:my name is what,如果在changeName2()中新增global $name,執行結果則是:my name is where。
綜上,global的作用就相當於傳遞引數,在函數外部宣告的變數,如果在函數內想要使用,就用global來宣告該變數,這樣就相當於把該變數傳遞進來了,就可以參照該變數了。
除了使用global引數定義外,還可以使用超全域性變數$GLOBAL:
<?php $name = "why"; function changeName(){ $GLOBALS['name'] = "what"; } changeName(); echo "my name is " . $name . "<br/>"; ?>
2、global和$GLOBAL
一個例子:
<?php $var1 = 1; $var2 = 2; function test1(){ $GLOBALS['var2'] = &$GLOBALS['var1']; } test1(); echo $var2 . "<br />"; $var3 = 1; $var4 = 2; function test2(){ global $var3,$var4; $var4 = &$var3; } test2(); echo $var4 . "<br />"; ?>
輸出$var2的值為1,$var4的值為2,因為$var3的參照指向了$var4的參照地址。$var4的實際值並沒有改變。官方的解釋是:$GLOBALS['var']是外部的全域性變數本身,global $var是外部$var的同名參照或者指標。意味著$GLOBAL在一個指令碼的全部作用域中都可用,在函數或方法中無需執行global $variable; 就可以存取它們。與所有其他超全域性變數不同,$GLOBALS在PHP中總是可用的。另一個例子:
<?php $var1 = 1; function test1(){ unset($GLOBALS['var1']); } test1(); echo $var1 . "<br />"; $var2 = 1; function test2(){ global $var2; unset($var2); } test2(); echo $var2; ?>
輸出結果是$var1不存在,而$var2的值為1。這就證明,$var2只是別名參照,本身的值沒有受到任何的改變。也就是說global $var其實就是$var = &$GLOBALS['var'],呼叫外部變數的一個別名而已!
想了解更多程式設計學習,敬請關注欄目!
以上就是php全域性變數如何使用的詳細內容,更多請關注TW511.COM其它相關文章!