>백엔드 개발 >PHP 튜토리얼 >PHP中 global 与$globals的区别?

PHP中 global 与$globals的区别?

WBOY
WBOY원래의
2016-06-20 12:43:36812검색

先贴上代码 这是 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 的引用


谢谢你,麻烦你了, 我去下一本手册看看。
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:php?mysql다음 기사:PHP 分析一个日志文件?