KT客棧

Web程式交流 & 聊幹畫 / 心情手札

【PHP】6自訂函式-6.2 區域、全域、靜態變數

*PHP  6自訂函式-6.2 區域、全域、靜態變數

6.2 區域、全域變數
在3.2介紹變數、基本型別時,即有簡略帶到區域變數和全域變數的差別,PHP的全域變數(global variable),乃指在整個程式區段中皆能使用
而區域變數(local variable)則指僅能在該方法的範圍內生效。換言之,就是一頁程式當中同時有兩個變數名稱相同,但一個是區域、一個是全域的話,這兩個變數值仍是互不影響的(一個變數各自表述,互不干預的概念😆)。
#區域、全域變數之差別
<?php
  /*全域、區域變數之差別*/
  $a = "全域變數"."<br>";

  function news(){
    $a = "區域變數(我不會受到影響)"."<br>";
    echo $a;
  }
  echo $a;
  news(); //呼叫出來的區域變數值,並不會受到全域變數影響
  echo $a; //呼叫時不受到影響
  }
?>
執行結果如下:
  • 全域變數
  • 區域變數(我不會受到影響)
  • 全域變數

在區域變數的前面加上global指令還是能將其改變為全域變數。且一旦改變為全域變數後,變數值就會受到影響了!
#區域變數改為全域變數(加入global)
<?php
  /*將區域變數改變為->全域變數*/
  $b = "全域變數"."<br>";

  function network(){
    global $b; //加入global指令
    $b = "區域變數(加了global就會受到影響嚕~)"."<br>";
    echo $b;
  }
  echo $b;
  network(); //呼叫出來的變數值,已經是全域變數了
  echo $b.; //呼叫時會受到影響
  }
?>
執行結果如下:
  • 全域變數
  • 區域變數(加了global就會受到影響嚕~)
  • 區域變數(加了global就會受到影響嚕~)




6.2 靜態變數
在區域變數中當變數值為多少,每當它被執行後,存留於記憶體中的變數就會被釋放掉。
而靜態變數static命令的功能在於,當我們執行區域變數它能夠保留函式(留存於記憶體不被釋放掉)的變數值
#靜態變數(加入static)
<?php
  /*靜態變數*/
  //一般區域變數在執行後,此變數也就被釋放掉,不會存在記憶體中
  //但加上靜態變數static指令,可以讓區域變數值持續存在,不因執行一次後就消失
  function textbook(){
    static $book;
    $book += 3; //遞增加3後,存回於變數
    echo $book . "本教科書<br/>";

  }

  textbook();
  textbook();
  textbook();
?>
執行結果如下:
  • 3本教科書
  • 6本教科書
  • 9本教科書





沒有留言:

張貼留言

@templatesyard