国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP static靜態局部變量和靜態全局變量總結

2024-09-04 11:43:41
字體:
來源:轉載
供稿:網友

使用靜態局部變量的原因是它不能被外部使用,但是它的值依然在沒此使用后保留,雖然使用全局變量可以實現相同的功能,但是它經常會造成意外,靜態局部變量的特點:

1.不會隨著函數的調用和退出而發生變化,不過,盡管該變量還繼續存在,但不能使用它,倘若再次調用定義它的函數時,它又可繼續使用,而且保存了前次被調用后留下的值.

2.靜態局部變量只會初始化一次

3.靜態屬性只能被初始化為一個字符值或一個常量,不能使用表達式,即使局部靜態變量定義時沒有賦初值,系統會自動賦初值0(對數值型變量)或空字符(對字符變量);靜態變量的初始值為0.

4.當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮采用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,因此仍以采用局部靜態變量為宜。

PHP實例代碼如下:

  1. function test() 
  2.     static $var = 5;  //static $var = 1+1;就會報錯 
  3.     $var++; 
  4.     echo $var . ' '
  5. test(); //2 
  6. test(); //3 
  7. test(); //4 
  8. echo $var//報錯:Notice: Undefined variable: var  

關于靜態全局變量,全局變量本身就是靜態存儲方式,所有的全局變量都是靜態變量,PHP代碼如下:

  1. function static_global(){ 
  2.     global $glo
  3.     $glo++; 
  4.     echo $glo.'<br>'
  5.  
  6. static_global(); //1 
  7. static_global(); //2 
  8. static_global(); //3 
  9. echo $glo . '<br>'//3 
  10. //$a 將會在包含文件 b.inc 中生效。 代碼如下 復制代碼  
  11.     <?php   
  12.     $a = 1;   
  13.     include "b.inc";   
  14.     ?> 
  15.     <?php   
  16.     //局部變量測試   
  17.     $s1"out s1"//全局變量    
  18.        
  19.     function say(){   
  20.         $s1 = "in s1"//局部變量   
  21.         echo "say():$s1";   
  22.     }   
  23.     say(); //輸出局部變量: in s1   
  24.     echo "<br/>";   
  25.     echo "function out:$s1"////輸出全局變量:out s1   
  26.     //static變量測試   
  27.     function count1(){   
  28.         $num = 0;   
  29.         $num++;   
  30.         echo $num." ";   
  31.     }   
  32.     function count2(){ //www.survivalescaperooms.com 
  33.         static $num = 0;   
  34.         $num++;   
  35.         echo $num." ";   
  36.     }   
  37.        
  38.     for($i=0; $i<10; $i++){   
  39.         count1(); //11 1 1 1 1 1 1 1 1 1    
  40.     }   
  41.     echo "<br/>";   
  42.     for($i=0; $i<10; $i++){   
  43.         count2(); //1 2 3 4 5 6 7 8 9 10    
  44.     }   
  45.     echo "<br/>";   
  46.     //全局變量在函數中運用,加global   
  47.        
  48.     $a="php";   
  49.     $b = "java";   
  50.        
  51.     function show(){   
  52.         echo $a// 無輸出   
  53.         global $b;   
  54.         echo $b//定義global,輸出java   
  55.     }   
  56.     show();   
  57.     ?>   
  58. //輸出3 
  59. //代碼如下 復制代碼  
  60.     <?php   
  61.     $a = 1;   
  62.     $b = 2;   
  63.        
  64.     function Sum()   
  65.     {   
  66.         global $a$b;   
  67.        
  68.         $b = $a + $b;   
  69.     }   
  70.        
  71.     Sum();   
  72.     echo $b//3   
  73.     ?>   

在全局范圍內訪問變量的第二個辦法,是用特殊的 PHP 自定義 $GLOBALS 數組,代碼如下:

  1. <?php   
  2.     $a = 1;   
  3.     $b = 2;   
  4.        
  5.     function Sum()   
  6.     {   
  7.         $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];   
  8.     }   
  9.        
  10.     Sum();   
  11.     echo $b;   
  12. ?> 

靜態變量也提供了一種處理遞歸函數的方法,遞歸函數是一種調用自己的函數,代碼如下 :

  1. function Test()   
  2.     {   
  3.         static $count = 0;   
  4.        
  5.         $count++;   
  6.         echo $count//12345678910    
  7.         if ($count < 10) {   
  8.             Test ();   
  9.         }   
  10.         //$count--;   
  11.     }   
  12.     Test();  

總結:

局部變量——用在函數內,作用域就是所在函數 

全局變量——在函數外,作用域在整個php文件(包含了 include 和 require 引入的文件),但在函數中不能讀到,除非重新申明為global 

靜態變量——用在函數內,被調用完后,內存不釋放,保留最后值,多用來統計累加.

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衢州市| 乌海市| 长春市| 马鞍山市| 山西省| 清原| 天气| 鄢陵县| 邯郸县| 望城县| 中超| 巩留县| 项城市| 雅江县| 航空| 浑源县| 张家港市| 莱州市| 鄂托克前旗| 奉新县| 盐城市| 日喀则市| 易门县| 遂宁市| 灵武市| 贺兰县| 茶陵县| 瓮安县| 集安市| 若羌县| 新沂市| 阳新县| 若尔盖县| 颍上县| 孟州市| 和平县| 当涂县| 阜城县| 庆云县| 织金县| 正镶白旗|