Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 你能用一个变量作为操作顺序吗?_Php_Html_Variables_Syntax_Calculator - Fatal编程技术网

Php 你能用一个变量作为操作顺序吗?

Php 你能用一个变量作为操作顺序吗?,php,html,variables,syntax,calculator,Php,Html,Variables,Syntax,Calculator,我正在使用html和php编写一个基本的计算器脚本。方法是输入两个数字,然后选择要使用的运算符 HTML代码 计算器 计算器 + - * / PHP代码 计算器 这($result=$num1$calc$num2;)是合乎逻辑的还是完全错误的?还有其他选择吗?任何帮助都将不胜感激。不,PHP中没有该功能 您需要一个开关语句或某种条件: switch($calc) { case "+": return $num1 + $num2; brea

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

HTML代码


计算器
计算器

+
-
*
/

PHP代码


计算器

这($result=$num1$calc$num2;)是合乎逻辑的还是完全错误的?还有其他选择吗?任何帮助都将不胜感激。

不,PHP中没有该功能

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

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);
?>


请参见《leemo代码》中的更多内容,这是正确的方法。使用任何形式的评估或类似评估都是一种粗略的假设,即输入是正确的,而不是恶意的。此外,您可能应该从输入的数字中删除任何看起来不像数字、+ve或-ve或小数点的内容。也就是说,使用正则表达式只允许那些合法的输入字符,其他什么都不允许。这对我来说很有效,但我没有得到任何输出。我怎么能用这个来回显结果呢?@Scooterpar我假设你要将上面的代码转储到一个函数中。您只需将
return
更改为
echo
,我还没有对其进行测试,但是您可能会遇到一些url编码问题。除此之外,这是一个很好的答案。
switch($calc)
{
    case "+":
        return $num1 + $num2;
        break;
    case "-":
        return $num1 - $num2;
        break;
}
<?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);
?>