我试图通过检查变量是否是某个运算符来避免重复我的代码。
基本上..
$op = $_POST['operator'];
$x = 5;
$y = 2;
$result = $x /* $op instead of '+'/'-'/'*'/'/'/'%' */ $y;
这是可能的还是我必须将运算符作为字符串发送并按照运算符类型复制代码?
答案 0 :(得分:2)
做这样的事情要安全得多:
$x = 5;
$y = 2;
switch($_POST['operator']){
case '+':
$result = $x + $y;
break;
case '-':
$result = $x - $y;
break;
case '*':
$result = $x*$y;
break;
case '/':
$result = $x/$y;
break;
case '%':
$result = $x % $y;
break;
default:
$result = 'Operator not supported';
}
这些方面的东西。
答案 1 :(得分:1)
咳咳。你可以eval
。
$result = eval("$x $op $y");
但这是危险,您应该非常小心地清理变量。有句话说“如果你的问题需要使用eval
,那么问题就错了。”这样的事情。做这样的事情几乎肯定是可取的:
function apply_op($x, $y, $op) {
switch ($op) {
case '+': return $x + $y;
...
}
}
答案 2 :(得分:0)
你可以做到这一点:
$operators = array("+", "-","*","%","/");
$op = $_POST["operator"];
if(in_array($op, $operators)) {
echo eval("$x $op $y");
} else {
echo "Operator not supported";
}