• 关于global和$GLOBALS[]的一些实践


    鉴于网上谈论未讲到重点,so
    代码示例:
    测试1:

    1 <?php
    2 function test(){
    3     global  $var;
    4     $var ++;
    5 }
    6 $var = 1;
    7 test();  
    8 echo $var;

    结果:2
    嗯,和自己理解一模一样
    测试2:

    1 <?php
    2 global $var;
    3 $var = 1;  
    4 function test(){  
    5     $var ++;  
    6 }  
    7 test();  
    8 echo $var;

    结果:我想你们都知道是神马结果

    总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用;

    再来:
    测试3:

    1 <?php  
    2 $var = 1;  
    3 function test(){  
    4     global $var;  
    5     unset($var);  
    6 }  
    7 test();  
    8 echo $var;

    嘿嘿,一运行,居然输入1,TM的unset失效了,为嘛?好吧,我给你的解释是,函数中global $val,但是,函数外面也有一个$val,你要绝对相信,他不是他,
    他是是他的一个别名;
    在测试1中,$var ++ 结果为2,测试3unset($val) 为啥还是1?因为他操作的是别名的那个他,这里我们把他说成它,别名他=>它。你干掉了它,但是还有一个他;咋样,解释的非常清楚;

    ok,既然说到了global,那咋也来说说这个这个那个啥$GLOBALS[],到这里,如果你要说这不是同一个人吗,一个是小名,一个还是小名,hehe;
    官方解释:$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针。
    看测试;
    测试4:

    1 <?php  
    2 $var = 1;  
    3 function test(){  
    4     unset($GLOBALS['var']);  
    5 }  
    6 test();  
    7 echo $var;


    结果:啥都没有;为啥和测试3不一样?谁告诉你她(他/它)们一样了。这里只有他,没有它;
    所以根据官方与测试案例总结:global $var其实就是$var = &$GLOBALS['var']。

  • 相关阅读:
    Linux效劳器装机安全快速进阶指南(6)
    VLC 0.8.6b
    Mesk:简洁而朴实的音乐播放器
    OpenOffice.org最先支持微软docx等技俩
    Rawstudio-轻松转换 RAW 图片
    Transmission 0.70
    Openoffice3.0: 微软Office的解散者?
    AcetoneISO:Linux 下的“Daemon Tools”
    OpenOffice3将支撑PDF编纂及ac琐屑
    Linux的主动实行措施cron和crontab(1)
  • 原文地址:https://www.cnblogs.com/olaf/p/3806245.html
Copyright © 2020-2023  润新知