版权声明:原创文章,转载需注明本出处。 https://blog.csdn.net/silenty/article/details/84312745
情形1:
<HTML>
<HEAD>
<TITLE>全局变量global</TITLE>
</HEAD>
<BODY>
<?php
$room='30';
function showrooms1(){
//global $room;
$room='20';
echo $room.'<p>';
}
showrooms1();
function showrooms2(){
global $room;
echo $room.'<p>';
}
showrooms2();
echo $room.'<p>';
?>
</BODY>
<HTML>
运行结果:
20
30
30
稍作改变,情形2:
<HTML>
<HEAD>
<TITLE>全局变量global</TITLE>
</HEAD>
<BODY>
<?php
$room='30';
function showrooms1(){
$room='20';
global $room;
echo $room.'<p>';
}
showrooms1();
function showrooms2(){
global $room;
echo $room.'<p>';
}
showrooms2();
echo $room.'<p>';
?>
</BODY>
<HTML>
运行结果:
30
30
30
这个结果出乎意料。函数showrooms1中,“global $room;”意味着要调用函数外的全局变量$room之值,而不理会函数内部同名变量之值!
情形3:
<HTML>
<HEAD>
<TITLE>全局变量global</TITLE>
</HEAD>
<BODY>
<?php
$room='30';
function showrooms1(){
global $room;
$room='20';
echo $room.'<p>';
}
showrooms1();
function showrooms2(){
global $room;
echo $room.'<p>';
}
showrooms2();
echo $room.'<p>';
?>
</BODY>
<HTML>
运行结果:
20
20
20
再次出乎意料!函数showrooms1中,“global $room;”之后的函数内部同名变量赋值操作,能同步影响该全局变量!牵一发而动全身!
结论:
函数内部global之前的同名变量赋值操作,形同虚设;函数内容global之后的同名变量赋值操作,同步影响该全局变量之值。