多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > PHP中全局變量global詳解

PHP中全局變量global詳解

來源:程序員人生   發(fā)布時間:2014-05-13 17:33:28 閱讀次數:3997次

本文章來詳細的介紹關于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.優(yōu)秀的訪問器

實例代碼如下:

  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. ?> 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 麻豆影视免费观看 | 亚洲 欧美综合小说区图片区 | 日韩中文字幕视频在线观看 | 黄色aa视频| babes性欧美30| 亚洲乱仑| 亚洲成a人在线播放www | 亚洲色网址 | 欧美a视频在线观看 | 亚洲伊人久久大香线蕉啊 | 欧美孕妇xxxx做受欧美 | 欧美特黄一片aa大片免费看 | 亚欧色| 欧美不卡视频在线 | 精品欧美一区手机在线观看 | 欧美精品一级毛片 | 亚洲国产一区二区三区在线观看 | 国产成人片| 一区二区三区欧美视频 | 性欧美videos hd | 欧美 亚洲 中文字幕 | 国产高清在线精品二区一 | 性欧美久久 | 成人中文字幕在线高清 | 久久手机看片 | 国产尤物视频在线 | 日本一区视频在线观看 | 亚洲视频在线播放 | 欧美整片在线观看 | 国产精品久久久久乳精品爆 | 日韩亚洲欧美性感视频影片免费看 | www色视频 | 亚洲三级在线视频 | 久久视频精品36线视频在线观看 | 性高湖久久久久久久久aaaaa | 中文字幕一区二区三区精彩视频 | 国产高清视频免费在线观看 | 亚洲欧美专区精品久久 | 久久国产免费一区 | 国产在线每日更新 | 亚洲天堂小视频 |