php - 将运算符传递给函数

时间:2013-12-01 08:04:43

标签: php

是否可以将操作符传递给函数?像这样:

function operation($a, $b, $operator = +) {
    return $a ($operator) $b;
}

我知道我可以通过将$运算符作为字符串传递并使用switch { case '+':... }来完成此操作。但我只是好奇。

4 个答案:

答案 0 :(得分:5)

不可能在php中重载运算符,但有一种解决方法。你可以,例如传递函数add,sub,mul等。

function add($a, $b) { return $a+$b; }
function sub($a, $b) { return $a-$b; }
function mul($a, $b) { return $a*$b; }

然后你的功能将是:

function operation($a, $b, $operator = add) {
    return $operator($a, $b);
}

答案 1 :(得分:2)

这可以使用eval函数

来完成
function calculate($a,$b,$operator)
{

    eval("echo $a $operator $b ;");
}

calculate(5,6,"*");

感谢。

答案 2 :(得分:1)

尝试,您无法在功能中传递运算符,您可以使用功能名称,例如添加,减法,乘法等等,

function operation($a, $b, $operator ='ADDITION') {

     $operator($a, $b);
}

 function ADDITION($a, $b){
       return $a + $b;
 }

答案 3 :(得分:0)

我知道你在这里特别提到没有使用switch语句,但我认为如何使用switch语句来设置它是很重要的,因为在我看来这是最简单,最安全,最方便的方式这样做。

function calculate($a, $b, $operator) {
    switch($operator) {
        case "+":
            return $a+$b;
        case "-":
            return $a-$b;
        case "*":
            return $a*$b;
        case "/":
            return $a/$b;
        default:
            //handle unrecognized operators
    }
    return false;
}