-2

我正在用 PHP 编写一个程序来为变量分配一个函数名并动态调用它。我有下面的代码,当我运行添加代码时,它显示了所有人的答案。

function multiply($val1, $val2)
{
  $mul = $val1 * $val2;
  echo $mul;
}

function divide($val1, $val2)
{
  $div = $val1 / $val2;
  echo $div;
 }

$func = plus($_POST['val1'], $_POST['val2']);
$func = minus($_POST['val1'],$_POST['val2']);
$func = multiply($_POST['val1'],$_POST['val2']);
$func = divide($_POST['val1'],$_POST['val2']);

请帮忙。

4

4 回答 4

0

您还可以将函数实现为闭包并传递该闭包。如果传递一个函数是你想要的。

$divide = function($val1, $val2) {
    $div = $val1 / $val2;
    echo $div;
};

$divide($_POST['val1'], $_POST['val2']);
other_function($divide, $param, $otherParam); // you could use the closure $divide inside this function.

但请不要忘记转义您用于脚本的用户输入。

于 2012-11-12T06:55:30.990 回答
0

使用您建议的代码,您不会创建要动态调用的 4 个变量,而是调用 4 个函数加、减、乘和除。这些函数生成输出,就像您实现它们一样。$func总是被这些函数的返回值替换。

相反,如果你真的必须使用动态函数调用,你应该尝试这样的事情:

call_user_func($_POST['operation'],$_POST['val1'],$_POST['val2']);

请注意,对于生产,您确实应该验证后变量值。

于 2012-11-12T06:41:03.470 回答
0

请在此处查看如何使用变量函数,并查看您尝试过的完整代码。

也许你正在尝试这样的事情:

function add($one, $two)
{
   return $one + $two;
}

$funcname = "foo";
echo $funcname(1, 4);
于 2012-11-12T06:41:11.850 回答
0

这是您可以尝试并使其适合您的需求的方法。

function user_selection($operation,$op1,$op2){
   switch ($operation){
    case '+':
        return $op1 + $op2;
        break;
    case '-':
        return $op1 - $op2;
        break;
    case '*':
        return $op1 * $op2;
        break;          
    case '/':
        return $op1 / $op2;
        break;  
    }

}

并调用上面的函数,你可以把

  $functionName = 'user_selection';
  echo $functionName('+',1,2);

您可以通过更改参数、操作等来做不同的事情。为了更好地理解这件事是如何工作的,请查看变量函数的 php 手册

于 2012-11-12T07:07:17.197 回答