我该如何解决这个问题:
if ($variable == 1) {
$math = "-";
} else {
$math = "+";
}
$numberOne = 10;
$numberTwo = 10;
$result = $numberOne $math $numberTwo;
这不起作用,有什么方法可以解决这个问题吗?
答案 0 :(得分:9)
这适用于您的示例。减法与添加负数相同。这比使用eval的替代方法更安全。
if ($variable == 1) {
$modifier = -1;
} else {
$modifier = 1;
}
$numberOne = 10;
$numberTwo = 10;
$result = $numberOne + ($numberTwo * $modifier);
答案 1 :(得分:3)
我想你可以使用eval()
- 但这会是一个非常糟糕的主意(它对表演不利,它不是“干净”,......) < / p>
在这种情况下,我通常会在运算符上使用switch
,每个可能的运算符使用一个案例。
在这里,它意味着使用这样的东西:
switch ($math) {
case '+':
$result = $numberOne + $numberTwo;
break;
case '-':
$result = $numberOne - $numberTwo;
break;
}
可以很容易地扩展到其他运营商。
(在您的具体情况下,如果您只有+
和-
,基于+1
或-1
的乘法进行的某些计算会更快写入)
答案 2 :(得分:2)
if ($variable == 1) {
$math = -1; // subtraction
} else {
$math = 1; // addition
}
$numberOne = 10;
$numberTwo = 10;
$result = $numberOne + ($math * $numberTwo);
答案 3 :(得分:1)
不爱三元运营商?
进一步缩小Gazler's answer:
$modifier = ($variable == 1) : -1 ? 1;
$numberOne = 10;
$numberTwo = 10;
$result = $numberOne + ($numberTwo*$modifier);
答案 4 :(得分:0)
如果您打算使用更复杂的数学,可以使用eval()
函数。