初学者,只是实现一个计算器功能。
每次运行出现 运算符错误第一个页面:
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Calculator</title>
</head>
<form action="cal.php" method="post">
<fieldset>
<legend>Calculator:</legend>
Num1: <input type="text" name="num1" size="8" /><br />
Num2: <input type="text" name="num2" size="8" /><br />
Oper: <select name="oper">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="submit" value="提交">
</fieldset>
</form>
</html>
第二个页面:<?php require_once 'oper.class.php';
//接收三个参数
//isset
if (isset($_REQUEST['num1'])) {
  $num1=$_RSQUEST['num1'];
}
if (isset($_REQUEST['num2'])) {
  $num2=$_RSQUEST['num2'];
}
if (isset($_REQUEST['oper'])) {
  $oper=$_RSQUEST['oper'];
}
//创建对象
$oper = new Oper();
echo $oper->getResult($num1,$num2,$oper);
?>
第三个页面被第二个页面调用。<?php
//定义一个专门提供计算的类
class Oper {

  public function getResult($num1,$num2,$oper){
 
  switch ($oper) { 
  case "+": 
  return $num1+num2;
  break;
  case "-": 
  return $num1-num2;
  break;
  case "*": 
  return $num1*num2;
  break;
  case "/": 
  return $num1/num2;
  break;
  default:
  echo '运算符错误';
  }
  }
}?>

解决方案 »

  1.   

    把case后面的双引改成单引试下
      

  2.   

    将页面1传递的符号做个urlencode在接收后做一个urldecode还原 就可以了
      

  3.   

    1、$num1=$_REQUEST['num1'];  //后面两个自己改正2、  $opero = new Oper();   //这里将  $oper 变量覆盖了,换换名字。
            echo $opero->getResult($num1,$num2,$oper);
    3、 return $num1+$num2;   //num2 少了变量符号 $, 后面的直接改正