1
2
3
4
5
6
7
8
9
10
11

變量的作用域

發(fā)布時(shí)間:2017-07-20 07:57 水要  發(fā)鄉從布人:毛書朋   會店 浏覽次數:7069


關聯課件:4子項目四 - 變量的作用域 (點擊在線預覽)



4.3.7  變量的作用域

    &煙開nbsp; PHP中的變量按其作用域的不同可以分爲若幹種器中(zhǒng)類,如局部變量、全局變量、靜街還态變量、動态變量、引用變量、預定義變量、外部變秒西量等,其中引用變量已經(jīng)講過(gu物她ò)了,預定義變量和外部變量將(jiāng)在第5章講解,爸山下面(miàn)對(duì)前4種(z農花hǒng)變量的進(jìn)行詳細講解。商鄉

4.3.7.1  局部變量與全局變量  &n匠來bsp;

     PHP中的變量船海是有作用範圍的,一般情況下,變量的作用域男懂是包含變量的PHP程序塊,也就(jiù)是“<?php算跳”和“?>”之間的代碼或者“{”、“}”之間的代碼。相讀如果其中還(hái)有include線理()或require()函數包含的文件,變量的作用域也可以擴展到這(z從報hè)些文件裡(lǐ)。

     在主程序商鐵中定義的變量隻在主程序中有效,在函數中定義的變量隻在函數中有效靜機,在函數之外就(jiù)無效了。

如果要在函數中引用主程序中的變量風關的值,要使用PHP定義的$GLOBALS數組。$G讀公LOBALS數組是一個以變量名爲下标的數組,可以直信要接調用。

       還(通和hái)有一種(zhǒng)實現跨域調用功能(nén就暗g)的方法就(jiù)是使用全局變量,值得注區些意的是,PHP中的全局變量并不是對(duì)整睡木個程序都(dōu)可見,在主程序中可以訪問函數中的全局變量,但麗聽是在函數中并不能(néng)訪問主程序的全局變量。其定義的語法爲中西:

global  &n土用bsp;   $變量名;

      隻要將(jiā高服ng)變量定義爲全局變量,以後(hòu)訪問這(zhè)弟紅個變量時(shí)就(jiù)不需要使用$GLOB熱廠ALS數組了。程序4-25.ph喝文p爲就(jiù)全局變量和局部變量使用示例。

<!--文件4-25.php:局部變新和量和全局變量-->
<HTML>做物;
<HEAD>
  市看;  <TITLE>局部雪相變量和全局變量</TITLE&議和gt;
</HEAD>
&l南窗t;BODY>
   農河; <?php
&nb近對sp;    人會;   $var1=6; 錯師 //定義一個局部變量
 &n到他bsp;    &nb能動sp; echo "定義跳現局部變量$var=".匠謝$var1;

     舞舊   inclu和藍de("a.php");

 &n鄉能bsp;  &n校服bsp;   function m知嗎yfun1(){
    &nbs場樂p;    &n會朋bsp;  echo&銀玩nbsp;"<br>在myfun1()函數中輸出局部男街變量";
    &nb花笑sp;     明高;  echo "微日;$var1=".@$var友間1;
  &n照話bsp;     }
&體黃nbsp;   &nbs河區p;   my離書fun1();

   &nb民兵sp;    functi家銀on myfun2(){
 朋我      &n分那bsp;   請火; echo&nbs市歌p;"<br>畫短在myfun2()函數中輸出局部變量";
  器就;     &n事房bsp;    e上還cho "$var1理一=".$GLOBALS["var1"];
月暗      分了;  }
 &多件nbsp;   &n訊文bsp;  myfu看弟n2();

 &n木身bsp;    &n謝電bsp; global $var2畫站;
   &nb愛睡sp;   &服這nbsp;$var2=8;

  話務    錢術;  function myfun信路3(){
  &nb讀的sp;  &nbs男土p;   &nbs美河p;  global $var3;
 輛得;    來少;   &n書身bsp;   $var3=9;
 &拿費nbsp;  &nbs爸鐘p;    &nbs吃女p;  e懂些cho "<br>在my算水fun3()函數中輸出全局變量";
  錢書      &nb水現sp;   echo &qu草你ot;$var2=".@$var2."書我<br>";
&影又nbsp;     &月月nbsp;     echo公家 "$var3=".$var3;
&車動nbsp;     &裡輛nbsp; }
   &nbs視家p;    my區我fun3();

   &綠行nbsp;  通子;  echo&音媽nbsp;"<br>在函間金數外輸出全局變量";
   錢飛    行關; echo 麗嗎"$var2=".$var2;
 遠男;    &n業還bsp;  echo "北快;  $var3=".$var3;
&志村nbsp;   ?>
</BODY&可理gt;
</HTML>

    被(bèi)包含的a.php代碼如下:

<!--文件a.php:文件4-25.php所包含的文件--&g章風t;
<?php
	echo "&l一山t;br>在a.php中輸出$var相長的值";
	echo&nb和你sp;"$var1=&quo大票t;.$var1;
	echo "<br>話大;在a.php中的函數中輸出$var的值"技路;

	function 為拿myfun4(){
		echo&n吃路bsp;"$var1=".@$var1;很個
	}
	myfun4();
?>


程序4-25.php的運行結果如圖4-22區市所示。

4-22.jpg

圖4-22  程序4光得-25.php的運行結果

4.3.7.2  靜态變量和動态變量

     鐵站  靜态變量隻能(néng)用于函數範圍内,它與普從民通局部變量不同之處在于:當該函數運行結束時(shí得來),靜态變量不會(huì)丢失自體話己的值。靜态變量的定義方法爲在變量我微名前加“static”關鍵字。

       PHP中的動态變她木量允許一個變量的值作爲另一個變量的變量名讀靜,前提條件是這(zhè)個值要符合變量的命名規則。其通睡實就(jiù)是前面(miàn)學(xué)習過(gu志放ò)的“變量的變量”,之所以在此處再拿出來講解,是爲了與靜态變量相對(duì熱員)應。

 程序4-26.php爲靜态變量和動态國年變量示例。

<!--文件4-26.ph近離p:靜态變量與動态變量-->
<HTML>民件
<HEAD>
&件男nbsp;  醫行 <TITLE&g體下t;靜态變量與動态變量</TITLE>
上司</HEAD>
<BODY>
 &nb冷費sp;  <?php
 &nbs跳請p;    快車  functio兵呢n fun1()
 &n事歌bsp;  來雪;    {
 店機   &空費nbsp;     鄉時;  $int1=0;  &nb湖金sp;  &nbs舊錢p;  //答的定義普通變量
   &外事nbsp;  &行大nbsp;    &nbs讀會p;echo $in服工t1."&nbsp;"雨火;;
  &黑妹nbsp;    &見筆nbsp;    $int1  ;
&坐雜nbsp;  藍地;   &nb暗數sp; }
 物票;      路水 fun1();   &nbs離機p;     &n年關bsp;  &公人nbsp;    腦看    //輸出0
 &n醫但bsp;     &nb女舞sp;fun1();    &nb女玩sp;   月離  &nb請都sp;   &nb兵麗sp;   &n呢路bsp;  //輸出還(há我煙i)是0
     讀鄉   ec地西ho "<br>*******腦用******<br>"術店;;
   &nbs也工p;   做員 function&n慢男bsp;fun2()
 光中      &好費nbsp;{
     我坐;  &nb樂地sp;    static長可 $int2=0;&話裡nbsp; &nbs來快p;    國遠   //定義靜态變量
  城放     &nbs醫內p;    她化echo $int2."&nbsp很雜;";
 &nbs聽醫p;    兒物;  &nbs些好p;   $int2  ;
 &nbs技雜p;   學討;   }
 &子吃nbsp;     &n近做bsp;fun2();    &nb吃費sp;      這影    &nbs看鐵p;   雜術;  //輸出0
 &nb東去sp;   &nbs開公p;  fun2();&nb市理sp;   &n坐為bsp;     科不;   船通     &nbs歌雜p;  //物視輸出1
   &區關nbsp;  離理  echo &quo分藍t;<br>*************<br&g舊算t;";
    &n月森bsp;  &n明鐵bsp;$int=6;
  &來窗nbsp;    問票; $var="事機int";
&nbs商跳p;   &女開nbsp;  用小; echo&nbs為個p;$$var; &地小nbsp;    &n愛報bsp;    &nb體都sp;     //輸出看通動态變量
     近劇;   $$var=公行8;
   &n不下bsp;    echo 拍去;"&nbsp;"南新;.$int;
    費筆?>
</BODY>厭我
</HTML>

程序4-26.php的運行結果如圖4-23所示。

4-23.jpg

圖4-23  程序4-26.php的運行結果

        得文過(guò)程序4-26.php不難看出靜态變量與普木這通變量的區别,在函數fun2()中靜态變量$int2隻被(bèi)初始化議購了一次,在該函數退出時(shí年費)$int2的值不會(huì)丢失,所以反複調用函數fun2()時(shí),近術$int2的值會(huì)累加家體。



  • 趙博文 2018-01-07 16:03:52
    局部和全局作用域(loacal global民服) 在所有函數外定義的變量擁有全局作用域,在函數内部聲明的變量是局部變量,僅南低能(néng)在函數内部訪問。要在一個函數中使用全局變量,需要使你中用global關鍵字。
  • 趙博文 2018-01-07 16:04:37
    在用戶自定義函數中,一個局部函數範圍將(jiāng)被(bèi)得村引入。任何用于函數内部的變量按缺省情況將(jiāng)被(bèi)限制在年訊局部函數範圍内。
  • 嶽猛 2018-01-09 16:25:09
    <!--文件4-26.php:靜态變量資生與動态變量--> 2: <HTML> 學就 3: <HEAD&g內場t; 4: <TITLE>靜态變量與動态變算鐵量</TITLE> 5: </HEAD&g美喝t; 6: <BODY> 7慢裡: <?php 8: functi朋她on fun1() 9: { 10: 行來 $int1=0; 唱拍 //定義普通變量 費多11: echo $in在友t1."&nbsp長南;"; 12: 土司 $int1 ; 13: 民爸 } 14: 書刀 fun1(); 海市 //輸出0 15: 相窗 fun1(); 在低 //輸出還(hái)是0 16:算懂 echo "<br>****快習*********<br>這件"; 17: 綠務 function fun2(飛年) 18: { 務為 19: stat湖吃ic $int2=0; /刀兒/定義靜态變量 20: echo 年校$int2."&城空nbsp;"; 21: $int2費愛 ; 22: }歌還 23: fun2(); 街見 //輸照女出0 24: fun2(不服); //輸出1 票吃 25: echo "<br>**錯兵***********<br>"; 數市 26: $int=6; 27: 鐘人$var="int&站也quot;; 28: 遠影 echo $$v現河ar; 場鐘//輸出動态變量 29: $$var=8劇離; 30 echo "學街&nbsp;".$int; 3吧城1: ?> 中子 32: </BODY> 校子 33:</HTML> 這(zhè)一部分的代碼務腦測試了一下,很成(chéng)功
  • 甄丹丹 2018-01-09 16:30:02
    這(zhè)些語法基礎對(duì)于剛學(xu來了é)習PHP的人來說(shuō)是非常重要的,條理清晰,長北方便學(xué)習