PHP选择题

以下代码执行结果为:( )
<?php
$A="Hello ";
function print_A()
{
$A = "php mysql !!";
global $A;
echo $A;
}
echo $A;
print_A();
?>

A Hello
B php mysql !!
C Hello Hello
D Hello php mysql !!

请详细解释后一个输出Hello的原因,谢谢!

<?php
$A="Hello ";
function print_A()
{
$A = "php mysql !!";//这个$A只是函数体内部定义的,叫做局部变量,不影响外面

global $A;//此处是关键,global关键词为全局的意思,就是把全局变量(函数体外的$A)引入了函数体内,此时$A的是就是$A="Hello ";

echo $A;//所以输出Hello
}
echo $A;//这个$A的值是上面定义的$A="Hello ";的值,输出Hello,你应该懂吧。
print_A();//调用print_A(),进入函数体内部执行
?>
提示:这到题主要考察你对global的理解,实在不懂就去百度一下php global,会出来很多对global的详细介绍。这些都是基础,必须要弄懂的,加油吧。朋友
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-26
在函数体内的时候, $A的作用域仅仅是在当前函数体内, 它无法访问函数体外$A的值.

但是当你设置了global以后, 变量会由局部变量升级为全局变量, 这个时候它会受外部变量的影响.

所以, 你在函数体内的赋值会失效, 转而会得到函数体外的$A的值!
第2个回答  2012-09-26
应该是输出
Hello Hello

echo $A; //输出第一个Hello

print_A();//输出第二个Hello
print_A()方法中虽然定义的变量A,但是后又执行了global $A; 所以当前的A的值就是外部的A的值
第3个回答  2012-09-26
你最后一个输出的是整个函数,而函数内部有输出echo $A; 而$A是引用的函数外部的变量,输出的结果当然是Hello了。
第4个回答  2012-09-26
好吧,楼上正确...全局当你用global的时候,就是把当前的变量名称所对应的值给定义成了函数外面的$A在你这个函数执行到最后的时候,A的值就是global过来的了,如果说你改成先global再定义,那么A的值就是你所定义的了本回答被提问者采纳
相似回答