首頁 >後端開發 >PHP問題 >php全域變數如何使用

php全域變數如何使用

coldplay.xixi
coldplay.xixi原創
2020-10-10 17:15:282024瀏覽

php全域變數的使用方法:可以在函數內透過global來宣告該變量,程式碼為【$name = "why";function changeName(){global $name;$name = "what"; }】。

php全域變數如何使用

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[&#39;name&#39;] = "what";
}
changeName();
echo "my name is " . $name . "<br/>";
?>

2、global和$GLOBAL

#一個範例:

<?php
$var1 = 1;
$var2 = 2;
function test1(){
    $GLOBALS[&#39;var2&#39;] = &$GLOBALS[&#39;var1&#39;];
}
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[&#39;var1&#39;]);
}
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培訓欄位!

#

以上是php全域變數如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn