[英]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.