我正在尝试这个代码应该执行+,_,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 ()");
答案 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)
您将数字和运算符连接为不实际评估它们的字符串,因此操作永远不会执行。以下帖子可能会对您有所帮助。
答案 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将分别存储 。