簡體   English   中英

php - 將運算符傳遞給函數

[英]php - passing an operator to a function

是否可以將運算符傳遞給函數? 像這樣:

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

我知道我可以通過將 $operator 作為字符串傳遞並使用switch { case '+':... }來做到這一點。 但我只是好奇。

不可能在 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);
}

這可以使用 eval 函數來完成

function calculate($a,$b,$operator)
{

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

calculate(5,6,"*");

謝謝。

嘗試,您不能在函數中傳遞運算符,您可以使用函數名稱,如加法、減法、乘法...等,

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

     $operator($a, $b);
}

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

我知道你在這里特別提到不要使用 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM