PHP的一个全局变量如若引用了一个局部变量的地址

WBOY
풀어 주다: 2016-06-13 12:20:07
원래의
963명이 탐색했습니다.

PHP的一个全局变量如果引用了一个局部变量的地址

<br />	$b = "dasdf";<br />	function abc(){<br />		$a = "abc";<br />		global $b;<br />		$b = &$a;<br />		echo $b."inner;";<br />	}<br />	abc();<br />	echo $b.";";<br />
로그인 후 복사


在函数内部输出b的时候,是abc,但是离开函数后,输出b,又恢复成dasdf的初始值,这是怎么回事呢?按理说,引用了一个局部变量的地址,这个局部变量销毁后,b的值应该是空啊。
------解决思路----------------------
在手册:
http://www.php.net/manual/zh/language.references.whatdo.php#example-251
如果在一个函数内部给一个声明为 global 的变量赋于一个引用,该引用只在函数内部可见。可以通过使用 $GLOBALS 数组避免这一点。
原因如下:
把 global $var; 当成是 $var =& $GLOBALS['var']; 的简写。从而将其它引用赋给 $var 只改变了本地变量的引用。
------解决思路----------------------

本帖最后由 xuzuning 于 2012-08-28 09:21:48 编辑 $b = "dasdf";
function abc(){
  $a = "abc";
  global $b; //这是对 $GLOBALS['b'] 的引用
  $b = &$a;
  $GLOBALS['bb'] = & $a;
  echo $b."inner;";
}
abc(); //abcinner;
echo $b.";"; //dasdf;
echo $bb; //abc

------解决思路----------------------
记住php的两个概念,所有变量都是指针,所有作用域不同的变量是不同的变量,即可
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!