在变量PHP中存储加号和减号

时间:2011-07-20 20:57:34

标签: php

我该如何解决这个问题:

if ($variable == 1) {
    $math = "-";
} else {
    $math = "+";
}

$numberOne = 10;
$numberTwo = 10;

$result = $numberOne $math $numberTwo;

这不起作用,有什么方法可以解决这个问题吗?

5 个答案:

答案 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()函数。