PHP中 global 与$globals的区别?

WBOY
풀어 주다: 2016-06-20 12:43:36
원래의
787명이 탐색했습니다.

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


谢谢你,麻烦你了, 我去下一本手册看看。
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿