A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>计算器</title>
</head>
<body>
<?php
   if(!empty($_POST)) {
   $Num1 = $_POST["data1"];
   $Num2 = $_POST["data2"];
   $yunsuan = $_POST["yunsuanfu"];
     if ($yunsuan == "+") {
              $jieguo = $Num1 + $Num2;
     } else if ($yunsuan == "-") {
              $jieguo = $Num1 - $Num2;
     }else if($yunsuan == "*") {
              $jieguo = $Num1 * $Num2;
     }else if ($yunsuan == "/") {
              $jieguo = $Num1 / $Num2;
    }else if ($yunsuan == "&"){
       $jieguo = $Num1 & $Num2;
    }else if($yunsuan == "|"){
       $jieguo = $Num1 | $Num2;
    }

   }else {
           $Num1="";
           $Num2="";
           $jieguo="";
           $yunsuan="";
   }


?>
        <form action="" method="post">
       <input type="text" name="data1" value="<?php echo "$Num1"; ?>" />
       <select name="yunsuanfu" >
           <option value="+" <?php if ($yunsuan=="+") {
           echo 'selected="selected"';
           } ?>>+</option>
           <option value="-" <?php if ($yunsuan=="-") {
           echo 'selected="selected"';
           } ?>>-</option>
           <option value="*" <?php if ($yunsuan=="*") {
           echo 'selected="selected"';
           } ?>>*</option>
           <option value="/" <?php if ($yunsuan=="/") {
           echo 'selected="selected"';
           } ?>>/</option>
           <option value="&" <?php if ($yunsuan=="&") {
           echo 'selected="selected"';
           } ?>>&</option>
           <option value="|" <?php if ($yunsuan=="|") {
           echo 'selected="selected"';
           } ?>>|</option>

       </select>
       <input type="text" name="data2" value="<?php echo "$Num2"; ?>" />
       <input type="submit" value="="  />
       <input type="text"  name="result" value="<?php echo $jieguo; ?>" />
        </form>
</body>
</html>

3 个回复

倒序浏览
没有发现不正确啊
回复 使用道具 举报
zhy0372 发表于 2017-2-4 23:11
没有发现不正确啊

比如用123按位与45
你用我的代码计算一下, 为什么得出来的结果是00 呢, 应该是41吧
回复 使用道具 举报
一,123按位与45 的结果是0  ,在PHP代码中 ‘123’ & ‘45’ 结果为‘00’
二,在PHP手册中是这样描述的:If both operands for the &, | and ^ operators are strings, then the operation will be performed on the ASCII values of the characters that make up the strings and the result will be a string. In all other cases, both operands will be converted to integers and the result will be an integer. (字符串与字符串的结果是字符串,整型与整型的结果是整型)
三,解决方法: 修改代码 $jieguo = $Num1 & $Num2;  为 $jieguo = (int)$Num1 & (int)$Num2;  即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马