这让我大吃一惊。。。
我有一个独立的PHP文件,还有一个带有全局变量的简单函数
<?php
$var = 4;
function echoVar()
{
echo $var;
}
echoVar();
?>
当我调用echoVar()
时,没有返回任何内容。。。但是,如果我将$var
放在函数中,它将返回4。
这是怎么回事?在这种情况下,$var
不应该是全局的吗?
如果变量设置在函数外部,则在该函数内部不可见。若要访问它,必须使用global
关键字将其声明为全局。这被称为作用域。
<?php
$var = 4;
function echoVar() {
global $var;
echo $var;
}
echoVar();
注意:这通常被认为是不好的做法。阅读本文了解更多信息。
一个好的替代方案是将变量作为参数传入:
<?php
$var = 4;
function echoVar($var) {
echo $var;
}
echoVar($var);
这里有很多选项。。。像
<?php
$var = 4;
function echoVar($var)
{
echo $var;
}
echoVar($var);
?>
或
<?php
$var = 4;
function echoVar()
{
global $var;
echo $var;
}
echoVar();
?>
您可以将$var作为参数,如下所示:
$var=4;
function echoVar($var)
{
echo $var;
}
echoVar($var);
或者使用全局,比如:
$var = 4;
function echoVar()
{
global $var;
echo $var;
}
echoVar();
当您调用任何函数时,它都是创建局部变量,因此您必须在调用函数部分传递参数。
$var = 4;
function echoVar($var)
{
echo $var;
}
echoVar($var);
只是澄清一下,因为每个人似乎都在发布垃圾。
- 不使用
global $var;
- 不要在函数内部回声
- 函数的输出在被回显之前不需要分配给变量
这就是它"应该"做的。
<?php
$var = 4; //set initial input var this is external to the function
function echoVar($internalvar) { /*notice were accepting $var as $internalvar I'm doing this to clarify the different variables so you don't end up getting confused with scope $internalvar is local to the function only and not accessible externally*/
return $internalvar; //now we pass the function internal var back out to the main code we do this with return you should never echo out your output inside the function
}
echo echoVar($var); //call function and pass $var in as an arguement
?>