> 백엔드 개발 > PHP 튜토리얼 > 关于全局变量global懂得和疑惑

关于全局变量global懂得和疑惑

WBOY
풀어 주다: 2016-06-13 12:59:49
원래의
844명이 탐색했습니다.

关于全局变量global理解和疑惑?
php刚刚起步,对global产生了疑问,然后自己试验了下:

function test()<br />
{<br />
	global $a;<br />
	$a=10;<br />
	global $b;<br />
    $b=$a+10;   <br />
}<br />
test();<br />
echo $a."<br>";<br />
echo $b."<br>";<br />
?>
로그인 후 복사

恩,效果很好,果然输出10 20.
然后我又这样写了下:
<?php<br />
function test()<br />
{<br />
    $a=10;<br />
    global $a;<br />
    $b=$a+10;<br />
    global $b;   <br />
}<br />
test();<br />
echo $a."<br>";<br />
echo $b."<br>";<br />
?>
로그인 후 복사

这次就蛋疼了,为什么不报错也不提示,而是输出的是空白呢?
既然上全局变量,整个php文件都能用吧,我又进行了下面的测试:
global $c;<br />
$c=7;<br />
function test()<br />
{<br />
    echo $c;   <br />
}<br />
test();<br />
로그인 후 복사

然后提示,未定义变量.
是不是,定义了全局变量也不能在函数里面用?要想将值传给函数,只能通过参数的方式呢?
------解决方案--------------------
声明在前,使用在后
这是普遍的原则

global 是在函数中声明全局变量用的
------解决方案--------------------
先定义变量 $a='aaa';

函数中
function test()
{
global $a;
//使用$a;
}
------解决方案--------------------
第一个例子,你是先定义全局变量,然后使用全局变量。
第二个例子,你是先定义本地变量,然后再定义全局变量。但是你赋值的时候是使用本地变量,所以出现了你所见到的问题。
------解决方案--------------------
<?php<br />
function test()<br />
{<br />
    $a=10;      // 这个是局部变量以下同样<br />
    global $a;  // 这里声明了全局变量,以后出现的$a就是全局变量$a了<br />
                   // 在函数中使用全局变量都需要这样先声明一下否则默认为局部变量<br />
    $b=$a+10;<br />
    global $b;   <br />
}
로그인 후 복사

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