1. 程式人生 > >php中函式內部呼叫外部變數

php中函式內部呼叫外部變數

  1. php函式在使用外部變數的幾種情況。
    1. 外部用global定義
      1. 函式內使用$GLOBALS陣列引用
        global $mytext;
        $mytext="外部使用global定義";
        function test(){
            echo $GLOBALS['mytext']."<br>";
        }
        test();

         

    2. 內部用global定義
      1. 內部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
      2. 內部使用global定義
        1. 用陣列下變數名有限外部定義的變數,但是下面註釋開啟的話全部會獲取函式內部的全域性變數。
          $mytext1="外部未使用global";
          function test(){
              //global $mytext1;
              // $mytext1 = "今天是個好天氣";
              $mytext1="函式內部定義";
              echo $mytext1."<br>";
              echo $GLOBALS['mytext1']."<br>";
          }
          test
      3. 將函式外部變數用引數傳遞
        $mytext=”nihao”;function test($mytext){echo $mytext;
        }
        test($mytext);
        

         

    3. 總結:
      1. 函式外global宣告,函式內使用$GLOBALS陣列引用;
      2. 函式內global宣告,函式內$GLOBALS陣列或者直接引用;
      3. 在呼叫函式的時候用一個引數傳遞。