php中函式內部呼叫外部變數
阿新 • • 發佈:2018-12-15
- php函式在使用外部變數的幾種情況。
- 外部用global定義
- 函式內使用$GLOBALS陣列引用
global $mytext; $mytext="外部使用global定義"; function test(){ echo $GLOBALS['mytext']."<br>"; } test();
- 函式內使用$GLOBALS陣列引用
- 內部用global定義
- 內部test1中var1和var2值都會變為100,但由於&符沒有改變值本身而是在函式中將var2指向var1的內容,外部變數未發生改變所以執行完test1之後,var2的值仍為0,global內部定義能夠修改外部的值執行test3之後var4的值發生了改變。
function test1() { global $var1, $var2; $var2 = &$var1; echo "var1=".$var1."<br>"; echo "var2=".$var2."<br>"; } function test2() { $GLOBALS['var3'] = &$GLOBALS['var1']; } function test3() { global $var4; $var4=100; } $var1 = 100; $var2 = $var3 =$var4= 0; test1(); echo "test1執行後var2=".$var2."<br>";//輸出 0 test2(); echo "test2執行後var3=".$var3."<br>";//輸出 100 test3(); echo "test2執行後var4=".$var4."<br>";//輸出 100
- 內部使用global定義
- 用陣列下變數名有限外部定義的變數,但是下面註釋開啟的話全部會獲取函式內部的全域性變數。
$mytext1="外部未使用global"; function test(){ //global $mytext1; // $mytext1 = "今天是個好天氣"; $mytext1="函式內部定義"; echo $mytext1."<br>"; echo $GLOBALS['mytext1']."<br>"; } test
- 用陣列下變數名有限外部定義的變數,但是下面註釋開啟的話全部會獲取函式內部的全域性變數。
- 將函式外部變數用引數傳遞
$mytext=”nihao”;function test($mytext){echo $mytext; } test($mytext);
- 內部test1中var1和var2值都會變為100,但由於&符沒有改變值本身而是在函式中將var2指向var1的內容,外部變數未發生改變所以執行完test1之後,var2的值仍為0,global內部定義能夠修改外部的值執行test3之後var4的值發生了改變。
- 總結:
- 函式外global宣告,函式內使用$GLOBALS陣列引用;
- 函式內global宣告,函式內$GLOBALS陣列或者直接引用;
- 在呼叫函式的時候用一個引數傳遞。
- 外部用global定義