这让我大吃一惊......
我有一个独立的PHP文件,以及一个带有全局变量的简单函数。
<?php
$var = 4;
function echoVar()
{
echo $var;
}
echoVar();
?>
当我致电echoVar()
时,不会返回任何内容...但是,如果我将$var
放在函数内,它将返回4.
这里发生了什么?在这种情况下,$var
不应该是全球性的吗?
答案 0 :(得分:5)
如果在函数外部设置变量,则在该函数内部不可见。要访问它,您必须使用global
关键字将其声明为全局。这称为范围。
<?php
$var = 4;
function echoVar() {
global $var;
echo $var;
}
echoVar();
注意:这通常被视为不良做法。请阅读this以获取更多信息。
一个好的选择是将变量作为参数传递:
<?php
$var = 4;
function echoVar($var) {
echo $var;
}
echoVar($var);
答案 1 :(得分:3)
这里有很多选择......比如
<?php
$var = 4;
function echoVar($var)
{
echo $var;
}
echoVar($var);
?>
或
<?php
$var = 4;
function echoVar()
{
global $var;
echo $var;
}
echoVar();
?>
答案 2 :(得分:0)
您可以将$ var作为参数,如下所示:
$ var = 4;
function echoVar($var)
{
echo $var;
}
echoVar($var);
或使用global,如下所示:
$var = 4;
function echoVar()
{
global $var;
echo $var;
}
echoVar();
答案 3 :(得分:0)
当你调用任何函数时,它会创建局部变量,所以你必须在调用函数部分时传递参数。
$var = 4;
function echoVar($var)
{
echo $var;
}
echoVar($var);
答案 4 :(得分:0)
只是澄清一下,因为每个人似乎都在发布垃圾。
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
?>