你能用一个变量作为运算顺序吗


Can you use a variable as an order of operations?

我正在使用html和php编写一个基本的计算器脚本。这个想法是输入两个数字,然后选择要使用的运算符。

HTML代码

<html>
<head>
<title>Calculator</title>
<meta charset="utf-8" />
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<h3>Calculator</h3>
<form action="calc.php" method="get">
<p><input name="num1" type="text" size="8" maxlength="8">
<select name="calc">
    <option value="+">+</option>
    <option value="-">-</option>
    <option value="*">*</option>
    <option value="/">/</option>
</select>
<input name="num2" type="text" size="8" maxlength="8"></p>
<p><input type="submit" value="Calculate"></p>
</form>
</div>
</body>
</html>

PHP代码

<html>
<head>
    <title>Calculator</title>
    <meta charset="utf-8" />
    <link href="style2.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<?
    $num1=$_GET['num1'];
    $num2=$_GET['num2'];
    $calc=$_GET['calc'];
    $result = $num1 $calc $num2;
    echo "$result";
?>
</div>
</body>
</html>

这($result=$num1$calc$num2;)符合逻辑还是完全错误?有其他选择吗?如有任何帮助,我们将不胜感激

不,PHP中没有该功能。

您需要一个switch语句或某种条件:

switch($calc)
{
    case "+":
        return $num1 + $num2;
        break;
    case "-":
        return $num1 - $num2;
        break;
}

注意:如果在每种情况下都使用return,那么有人会不可避免地注意到break表达式并不是严格必要的,但它们在规范中,IDE有时会发现它们不存在。

试试这个

<?php
$num1=$_GET['num1']; // get value 1 from your form
$num2=$_GET['num2'];// get value 2 from your form
$calc=$_GET['calc']; // get operator from your form
$operators = array(
'+' => 'bcadd',
'-' => 'bcsub',
'*' => 'bcmul',
'/' => 'bcdiv'
);
echo $operators[$calc]($num1, $num2);
?>

请参阅BCMath