自学PHP随感随记之global全局变量

版权声明:原创文章,转载需注明本出处。 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之后的同名变量赋值操作,同步影响该全局变量之值。

猜你喜欢

转载自blog.csdn.net/silenty/article/details/84312745
今日推荐