我希望将它的值作为参数传递给我的函数
function dostuff($input) {
global $input;
if ($input == 5) {
$output = "Success";
} else {
$output = "Failure";
}
echo $output;
}
为什么要运行
dostuff(5);
不回应输出变量("成功"),就像它应该的那样?
答案 0 :(得分:2)
扩展Jouby的解释:
在PHP中,与许多其他语言不同,默认情况下,变量是本地变量。这简化了编写安全函数的一些方面(具有较少的偶然副作用),但如果您真的想要使用全局变量,则需要额外的步骤。
在函数定义中,参数变量实际上是专用的局部变量。参数变量的神奇之处在于,当您调用函数时,它会自动分配。
PHP中的global
关键字将变量名称与全局变量相关联,从而有效地替换了局部变量。 如果您想使用全局数据,则只需使用global
,这通常不是一个好主意。
在你的例子中,这正是你所做的。您已使用不存在的全局变量破坏了本地参数。只需删除该语句,事情应该有效。
答案 1 :(得分:0)
您无需设置global $input;
,请尝试以下操作:
function dostuff($input) {
if ($input == 5) {
$output = "Success";
} else {
$output = "Failure";
}
echo $output;
}
有了这个,dostuff(5)
返回“成功”
说明:
global
将全局变量用于您的函数(http://php.net/manual/en/language.variables.scope.php),因为您在函数中传递了$input
,所以不需要它参数强>