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

首頁 > 開發 > PHP > 正文

PHP中全局變量global詳解

2024-05-04 21:57:40
字體:
來源:轉載
供稿:網友

本文章來詳細的介紹關于PHP中全局變量global的方法,有需要了解global函數使用方法的朋友可參考本文章.

變量的范圍即它定義的上下文背景(也就是它的生效范圍).大部分的 PHP 變量只有一個單獨的范圍.這個單獨的范圍跨度同樣包含了 include 和 require 引入的文件.

實例代碼如下:

  1. <?php 
  2. $a = 1; 
  3. include 'b.inc'
  4. ?> 

這里變量 $a 將會在包含文件 b.inc 中生效.但是,在用戶自定義函數中,一個局部函數范圍將被引入.任何用于函數內部的變量按缺省情況將被限制在局部函數范圍內.例如:

實例代碼如下:

  1. <?php 
  2. $a = 1; /* global scope */ 
  3. function Test() 
  4.     echo $a/* reference to local scope variable */ 
  5. Test(); 
  6. ?> 

這個腳本不會有任何輸出,因為 echo 語句引用了一個局部版本的變量 $a,而且在這個范圍內,它并沒有被賦值.你可能注意到 PHP 的全局變量和 C 語言有一點點不同,在 C 語言中,全局變量在函數中自動生效,除非被局部變量覆蓋.這可能引起一些問題,有些人可能不小心就改變了一個全局變量.PHP 中全局變量在函數中使用時必須申明為global.

今天就遇到了php 全局變量不起作用的問題.先上一段簡單的代碼:

實例代碼如下:

  1. <?php 
  2. $a = 0 ; 
  3. function Test() 
  4.     $a =1; 
  5. Test(); 
  6. echo $a
  7. ?> 

上面的代碼中輸出是0,那是因為函數體Test內$a變量被缺省設置為局部變量,$a的作用域就是在Test內.修改代碼如下

實例代碼如下:

  1. <?php 
  2. $a = 0 ; 
  3. function Test() 
  4. &nbsp;   global $a;//申明函數體Test內使用的$a變量為global全局變量 
  5. &nbsp;   $a =1; 
  6. Test(); 
  7. echo $a
  8. ?> 

申明函數體Test內使用的$a變量為global全局變量后,使得$a的作用全局,所以輸出為1.

上面的實例只是基本的global全局變量知識,下面我們看看復雜點的:

//A.php 文件

實例代碼如下:

  1. <?php 
  2. function Test_Global() 
  3. {&nbsp;&nbsp; 
  4.     include 'B.php';&nbsp;&nbsp; 
  5.     Test();&nbsp;&nbsp; 
  6. }&nbsp;&nbsp; 
  7. $a = 0 ; 
  8. Test_Global(); 
  9. echo $a
  10. ?>&nbsp; 
  11. //B.php 文件 
  12. <?php 
  13. function Test() 
  14. &nbsp;   global $a;//申明函數體Sum內使用的$a變量為global全局變量 
  15. &nbsp;   $a =1; 
  16. ?> 

為什么輸出的卻是0?!!

在用戶自定義函數中,一個局部函數范圍將被引入.任何用于函數內部的變量按缺省情況將被限制在局部函數范圍內(包括include 和 require 導入的文件內的變量)!

解釋:A.php文件的內Test_Global是定義好的第三方函數,該函數用include導入了B.php文件內的$a的global全局變量,所以$a被限制在Test_Global局部函數范圍內,所以B.php文件內的$a的作用范圍都在Test_Global內,而不是作用了整個A.php內….

解決方案:

1. 沖出局部函數

實例代碼如下:

  1. //A.php 文件 
  2. <?php 
  3. function Test_Global() 
  4. {&nbsp;&nbsp; 
  5.     Test();&nbsp;&nbsp; 
  6. }&nbsp;&nbsp; 
  7. include 'B.php';&nbsp;&nbsp; //將include 從局部Test_Global函數中移出 
  8. $a = 0 ; 
  9. Test_Global(); 
  10. echo $a
  11. ?>&nbsp; 
  12. //B.php 文件 
  13. <?php 
  14. function Test() 
  15.     global $a
  16.     $a =1; 
  17. ?> 

2.優秀的訪問器

實例代碼如下:

  1. //A.php 文件 
  2. <?php 
  3. include 'B.php';&nbsp; 
  4. $a =0; 
  5. Set_Global($a); 
  6. echo $a
  7. ?>&nbsp; 
  8. //B.php 文件 
  9. <?php 
  10. function Set_Global(&$var
  11.     $var=1; 
  12. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深泽县| 榆中县| 南澳县| 德州市| 宣化县| 彭水| 新宁县| 曲周县| 河津市| 吉林省| 象山县| 上杭县| 瑞丽市| 昌江| 新源县| 望江县| 太康县| 道孚县| 遂平县| 新宁县| 六盘水市| 浦东新区| 隆安县| 全州县| 九龙城区| 焦作市| 罗田县| 文山县| 台东市| 莱阳市| 顺平县| 龙南县| 齐河县| 北川| 柘城县| 汤原县| 辉县市| 清徐县| 金寨县| 锦州市| 上杭县|