Home  >  Article  >  Backend Development  >  PHP中 global 与$globals的区别?

PHP中 global 与$globals的区别?

WBOY
WBOYOriginal
2016-06-20 12:43:36805browse

先贴上代码 这是 global

<?php     $var1=5;   $var2=10;function testglobal(){    global $var1,$var2;    $var2=&$var1;        //这里将$var1的地址传给$var2    echo $var1,'---',$var2;}    testglobal();    $var2=20;    echo "第二次输出",$var1,'---',$var2; ?>

在调用完这个testglobal之后 给$var1赋值  再打印 $var1 与$var2的值 
  输出的结果是
5---5第二次输出20---10
在函数内将 var1的地址赋给var2(我测试了一下在函数体内改变var1的值的话同样会改变var2的值)  但是调用完后再给var2赋值,不会改变var1的值,在global后修改var1的值会影响到函数体外的var1的值

这是$globals的代码
<?php           $var1=5;    $var2=10;    function test()    {      $GLOBALS['var1'] =&$GLOBALS['var2'];      $GLOBALS['var1'] = 20;        }    test();    $var1=30;    echo $var1,$var2; ?>

使用$globals 无论是在函数体内还是函数体外都会改变 var1 与var2的值

问题:
  1:global引用变量是不是属于传值引用,在引用变量后其实只是将变量的值传递进函数体?但我在global中修改var1的值一样会影响到函数体外的var1的值,这是为什么?
 2:global 与$globals 之间都有哪些区别?

    期待得到指点,第一次提问格式有些乱,我会改进的。
  


回复讨论(解决方案)

这个问题不必纠结吧?手册中已经有了明确的说明


global $var1,$var2; //$var1 和 $var2 是全局变量的引用
$var2=&$var1; //对 $var2 赋值 $var1 的引用,这就切断了 $var2 对 全局变量 $var2 的引用

这个问题不必纠结吧?手册中已经有了明确的说明


global $var1,$var2; //$var1 和 $var2 是全局变量的引用
$var2=&$var1; //对 $var2 赋值 $var1 的引用,这就切断了 $var2 对 全局变量 $var2 的引用


谢谢你,麻烦你了, 我去下一本手册看看。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php?mysqlNext article:PHP 分析一个日志文件?