我有一个字符串变量$operation
,其值可以是+
或-
和两个整数变量$initial
和$unit
。
所以要回显它们之间算术运算的结果
我必须使用像
这样的东西 if($operation == '+') echo ($initial + $unit);
if($operation == '-') echo ($initial - $unit);
有没有一种方法可以在没有IF的情况下做到这一点?
答案 0 :(得分:3)
您可以使用地图,即
function add($a, $b) { return $a + $b; }
function sub($a, $b) { return $a - $b; }
$operations = array('+' => 'add', '-' => 'sub');
$operations[$operation]($initial, $unit);
答案 1 :(得分:3)
数学技巧:
echo $initial + (($operation == '-') ? -1 : 1) * $unit;
仅使用加法,但作弊乘以负数......:)
答案 2 :(得分:1)
echo ($operation == '+') ? $initial + $unit : $initial - $unit;
答案 3 :(得分:0)
eval。
但请确保在向eval
提供任何内容之前进行白名单验证。
if(in_array($operation, array('+', '-'))){
eval('echo $initial '.$operation.' $unit;');
}