PHP总和,乘法,除法,减法的原始输出

时间:2014-01-19 06:52:27

标签: php

我正在尝试这个代码应该执行+,_,x,/但我得到原始输出而不是sum,multiplaction,division,subtraction。这是我的代码。

if($randf=='1'){$fac='+';}
if($randf=='2'){$fac='-';}
if($randf=='3'){$fac='*';}
if($randf=='4'){$fac='/';}

$ran1=rand(1,100);
$ran2=rand(1,500);
$cans=$ran1.$fac.$ran2;

echo $cans;

但输出的内容

10+45

而不是55.请你告诉我在哪里做错了。

除此之外,我试图在帖子中执行一些过滤功能。当用户在帖子中提交数据时,我尝试匹配某些值,然后更新到数据库。不幸的是,这也失败了,总是给出0作为输出。

if ($ans2==$ans1)
{
    $marks==1;
}
else {
    $marks=0;
}
mysql_query("INSERT INTO TABLEA () VALUES ()");

4 个答案:

答案 0 :(得分:3)

您只是将数字和运算符视为字符串并将它们连接起来。如果你真的想设计这样的代码,你可以使用eval(),所以你的最后一行是echo eval($cans);

否则,更好的方法是在答案中使用像@ Nouphal.M这样的switch

注意:请记住,使用eval()比简单地进行算术运算更昂贵。

答案 1 :(得分:1)

我不会问你为什么要这样做..我们的同事们指出了更多有趣的方法。

您可以将包含该操作的字符串解释为相应的字符:

<?
$a = "10+45";
$c = 0;
eval("\$c = $a;");
echo $c; //echoes 55
?>

eval函数将执行字符串作为PHP命令,$ c将得到结果。

答案 2 :(得分:0)

您将数字和运算符连接为不实际评估它们的字符串,因此操作永远不会执行。以下帖子可能会对您有所帮助。

Variable Operators in PHP

答案 3 :(得分:0)

我认为你不能那样做。 "An operator is something that takes one or more values and yields another value"。你不能将它们视为字符串或者对它们进行类型转换。建议不要使用eval功能。看到警告here 你必须尝试这样的事情

$ran1=rand(1,100);
$ran2=rand(1,500);
$cans =0;
switch($randf){
   case "1": 
          $cans= $ran1+$ran2;
   break;
  .....
} 

return $cans;

[更新部分]

不推荐使用mysql_ *函数,因此您应该尝试使用mysqli或PDO。 您的查询错误。

插入查询的语法是

INSERT INTO your_table_name (field1,field2,...) VALUES (value1,value2,...)

如果your_table_name是您的表名,则field1,field2 ..是您要保存值的表字段名称value1,value2将分别存储