我正在尝试获取$result
的值,但它会给2+4
,因为我会给出值$first=2
,$second=4
和$operation= +
。
<?php
$first = $_REQUEST['first'];
$second = $_REQUEST['second'];
$operation = $_REQUEST['operation'];
echo $result = "$first+$operation+$second";
?>
<form id="dpk-form" action="" method="post">
<label>First No:</label> <input name="first" type="text" /><br /><br />
<label>Second No:</label> <input name="second" type="text" /><br /><br />
<label>Operation:</label> <input name="operation" type="text" /><br /><br />
<input type="submit" value="Submit" /><br /><br />
<label>Result:</label> <input name="result" type="text" /><br />
</form>
答案 0 :(得分:3)
使用运算符作为变量没有简单的方法。您可以使用eval()
,但这不是最佳做法。
我会这样做:
switch ($_REQUEST['operation']) {
case '+':
$result = $first + $second;
break;
case '-':
$result = $first - $second;
break;
}
echo $result;
当然你应该添加到你想要使用的switch
个其他运算符,当然如果你想使用除法,你需要考虑除以0。
答案 1 :(得分:0)
$result = eval($first.$operation.$second);
但是,在这种情况下调用eval
是一种非常糟糕且通常很危险的做法。
答案 2 :(得分:0)
无评估路线,但您需要预定义您允许的操作:
switch ($operation) {
case '+':
echo $first + $second;
break;
case '-':
echo $first - $second;
break;
case '/':
echo $first / $second;
break;
case '*':
echo $first * $second;
break;
case '%':
echo $first % $second;
break;
}
答案 3 :(得分:0)
这不会起作用,因为.
是一个字符串连接运算符,因此每个表达式都会尝试转换为字符串。
您可以在此处使用eval,但I would not recommend the usage。
你可以在这里使用switch语句。
switch($_REQUEST['operation'])
{
case '+':
$result = $_REQUEST['first'] + $_REQUEST['second'];
break;
case '-':
$result = $_REQUEST['first'] - $_REQUEST['second'];
break;
// ...
}
但是,这带来了高维护成本的缺点,并且不是很干。 如果你更高级,你可能想要使用strategy pattern。