<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    PHP語言中global和$GLOBALS[]的分析

    原來以為global和$GLOBALS除了寫法不一樣以為,其他都一樣,可是在實際應用中發現,2者的區別還是很大的!
    先看下面的例子:
    1. <?php
    2. // 例子1
    3. function test_global() {
    4.   global $var1, $var2;
    5.   $var2 =& $var1;
    6. }

    7. function test_globals() {
    8.   $GLOBALS['var3'] =& $GLOBALS['var1'];
    9. }

    10. $var1 = 5;
    11. $var2 = $var3 = 0;

    12. test_global();
    13. print $var2 ."\n";

    14. test_globals();
    15. print $var3 ."\n";
    16. ?>
    復制代碼
    執行結果為:
    0
    5
    怎么會這樣呢?不應該是2個5嗎?怎么會出現1個0和1個5呢?

    恩,我們保留以上問題,深入分析$GLOBALS和global的原理!
    引用php手冊的$GLOBALS的解釋:

    Global 變量:$GLOBALS
    注意: $GLOBALS 在 PHP 3.0.0 及以后版本中適用。

    由所有已定義全局變量組成的數組。變量名就是該數組的索引。

    這是一個“superglobal”,或者可以描述為自動全局變量。
    也就是說上面代碼中的$var1$GLOBALS['var1']是指的同一變量,而不是2個不同的變量!

    下面來分析global到底做了什么?

    我們都知道php中的函數所產生的變量都是函數的私有變量,那么global關鍵字產生的變量也肯定逃不出這個規則,為什么這么說呢,看下面的代碼:
    1. <?php
    2. // 例子2
    3. function test() {
    4.   global $a;
    5.   unset($a);
    6. }
    7. $a = 1;
    8. test();
    9. print $a;
    10. ?>
    復制代碼
    執行結果為:
    1
    為什么會輸出1呢?不是已經把$a給unset了嗎?unset失靈了?php的bug?

    都不是,其實unset起作用了,是把test函數中的$a給unset掉了,可以在函數后面加入
    1. print $a;

    所以我們得出一個結論,在函數中global和$GLOBALS[]的區別在于:

    global在函數產生一個指向函數外部變量的別名變量,而不是真正的函數外部變量,一但改變了別名變量的指向地址,就會發生一些意料不到情況,例如例子1.

    $GLOBALS[]確確實實調用是外部的變量,函數內外會始終保持一致!

    posted on 2009-04-19 16:52 丁克設計 閱讀(192) 評論(0)  編輯  收藏 所屬分類: PHP技術文檔

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    留言簿(6)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 国产性生交xxxxx免费| 毛片免费在线观看网站| 免费看AV毛片一区二区三区| 亚洲精品福利你懂| 午夜免费福利影院| 7m凹凸精品分类大全免费| 亚洲另类春色校园小说| 永久免费无码网站在线观看| 1000部啪啪未满十八勿入免费| 亚洲av无码久久忘忧草| 免费看大美女大黄大色| 一个人免费观看视频www| 亚洲精品GV天堂无码男同| 无码国模国产在线观看免费| www在线观看免费视频| 亚洲av无码一区二区乱子伦as| 免费成人在线视频观看| 亚洲高清中文字幕| 日韩成人免费视频播放| 亚洲免费综合色在线视频| 蜜臀98精品国产免费观看| 久久国产乱子伦精品免费一| 亚洲国产精品综合久久网各| 亚洲欧洲精品成人久久奇米网 | 亚洲国产精品久久久久秋霞小| 亚洲无圣光一区二区| 亚洲永久永久永久永久永久精品| 在线观看日本免费a∨视频| 色欲A∨无码蜜臀AV免费播 | 四虎成年永久免费网站| 精品亚洲视频在线| 亚洲中久无码永久在线观看同| 大片免费观看92在线视频线视频| 青青久在线视频免费观看| 一级特级aaaa毛片免费观看| 噜噜综合亚洲AV中文无码| 亚洲欧洲综合在线| 亚洲人成网亚洲欧洲无码久久| 久久精品亚洲福利| 国产真实伦在线视频免费观看| 日本不卡视频免费|