【问题标题】:a very simple php calculator that would not perform math operation :(一个非常简单的 php 计算器,不会执行数学运算 :(
【发布时间】:2016-04-13 03:54:44
【问题描述】:

我正在尝试创建一个简单的计算器(这可能很简单但找不到错误:( sigh* ),所以当我点击提交时,数字 1 和数字 2 将执行用户选择的操作。但是提交时答案不会回显:(这是什么问题?非常感谢!

<?php
if ($_POST['subBtn']) { 
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];

if($_POST['group1'] == 'add') {
echo $number1 + $number2 = $answer;
}
else if($_POST['group1'] == 'subtract') {
echo $number1 - $number2 = $answer;
}
else if($_POST['group1'] == 'times') {
echo $number1 * $num2ber = $answer;
} 
else if($_POST['group1'] == 'divide') {
echo $number2 / $number2 = $answer;

echo "<p>" . $answer . " </p>"; 
}
}
?>

<form name="number1" action="activity-2-4.php" method="post">
number1:<select name="number1">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
        </select><br>

number2:<select name="number2">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
        </select><br>
<input type="radio" name="group1" id="add" value="add">+<br/>
<input type="radio" name="group1" id="subtract" value="subtract">-<br/>
<input type="radio" name="group1" id="times" value="times">x<br/>
<input type="radio" name="group1" id="divide" value="divide">/<br/>
<button type="submit" name="subBtn" id="answer" value="answer">Calculate</button>
</form>

【问题讨论】:

  • $answer 应该在左侧。

标签: php html math calculator operation


【解决方案1】:

不要在 echo 语句中为变量赋值。此外,分配值的变量应始终位于左侧。此外,您的回声位于分界线的最后一个 elseif 内。

试试这个:

<?php
if (isset($_POST['subBtn']) && isset($_POST['group1'])) { 
    $number1 = isset($_POST['number1']) ? $_POST['number1'] : 0;
    $number2 = isset($_POST['number2']) ? $_POST['number2'] : 0;

    switch ($_POST['group1']) {
        case 'add':
            $answer = $number1 + $number2;
            break;
        case 'subtract':
            $answer = $number1 - $number2;
            break;
        case 'times':
            $answer = $number1 * $number2;
            break;
        case 'divide':
            $answer = $number2 / $number2;
            break;
        default:
            $answer = 'No operation method selected.';
            break;
    }

    echo "<p>" . $answer . " </p>";
}
?>

【讨论】:

  • 还给他解释一下'times'中使用了错误的变量,'divide'中的错误计算。
  • @Devs:你是对的。完成了,还对他的代码进行了一些重构。
【解决方案2】:

我相信这是你的问题:

echo $number2 / $number2 = $answer

改成:

$answer = $number2 / $number2

每个数学运算都一样。

您试图在存储数据的同时显示某些内容,但顺序错误。

在数学部分之后你已经有了答案的回声。

【讨论】:

    【解决方案3】:

    您需要检查 POST 变量是否存在。

    您错误地使用了echo $number1 + $number2 = $answer; 的计算、变量和回声,我猜您的预期输出4+1=5 采用这种格式。

    <?php
    if (isset($_POST['subBtn'])) 
    { 
        $number1 = isset($_POST['number1']) ? $_POST['number1'] : '';
        $number2 = isset($_POST['number2']) ? $_POST['number2'] : '';
        $group1  = isset($_POST['group1']) ? $_POST['group1'] : '';
    
        $answer  = '';
        $stmt    = '';
    
        switch ($group1)
        {
            case 'add': 
                $stmt   = $number1.'+'.$number2.'= ';
                $answer = $number1 + $number2;
            break;
    
            case 'subtract':    
                $stmt   = $number1.'-'.$number2.'= ';
                $answer = $number1 - $number2;
            break;
    
            case 'times':   
                $stmt   = $number1.'*'.$number2.'= ';
                $answer = $number1 * $number2;
            break;
    
            case 'divide':  
                $stmt   = $number1.'/'.$number2.'= ';
                $answer = $number1 / $number2;
            break;
        }
    
        echo "<p>" . $stmt.$answer . " </p>"; 
    }
    ?>
    
    <form name="number1" action="activity-2-4.php" method="post">
    number1:<select name="number1">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
            </select><br>
    
    number2:<select name="number2">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
            </select><br>
    <input type="radio" name="group1" id="add" value="add">+<br/>
    <input type="radio" name="group1" id="subtract" value="subtract">-<br/>
    <input type="radio" name="group1" id="times" value="times">x<br/>
    <input type="radio" name="group1" id="divide" value="divide">/<br/>
    <button type="submit" name="subBtn" id="answer" value="answer">Calculate</button>
    </form>
    

    【讨论】:

      【解决方案4】:

      $_POST 全局变量将所有内容存储为字符串。 从理论上讲,PHP 确实在后端进行类型杂耍并将其转换为数字,但这不会发生在你身上,我不知道你正在运行哪个版本的 PHP。所以你可以明确地将它转换为你自己。 试试这个

      $number1 = (float)$_POST['number1'];
      $number2 = (float)$_POST['number2'];
      

      如果你知道你得到一个 int 你可以做

      $number1 = (int)$_POST['number1'];
      $number2 = (int)$_POST['number2'];
      

      但我认为您的问题在于 group1。

      print_r($_POST);
      

      确保其中有 group1 并确保它的小写值完全相同,因为您正在检查小写字母,并且此操作区分大小写。

      然后下一步是在屏幕上打印一些东西,并确保你在 if 开始

      echo "i'm in the add case";
      

      等等

      【讨论】:

        【解决方案5】:

        改变你赋值的方式。改变

          $number1 + $number2 = $answer;
        

          $answer = $number1 + $number2;
        

        【讨论】:

          猜你喜欢
          • 2014-06-21
          • 1970-01-01
          • 2011-03-02
          • 2013-01-30
          • 2017-03-08
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多