难以将参数传递给函数?

时间:2017-04-02 20:59:20

标签: php

我希望将它的值作为参数传递给我的函数

function dostuff($input) {
global $input;

    if ($input == 5) {
        $output = "Success";
    } else {
        $output = "Failure";
    }
echo $output;
}

为什么要运行

dostuff(5);

不回应输出变量("成功"),就像它应该的那样?

2 个答案:

答案 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,所以不需要它参数