douza6300
2015-06-21 06:22
采纳率: 0%
浏览 19
已采纳

在我的函数上得到零除错误[关闭]

Like the title said I'm getting a divided by zero error on a function. I'm pretty new so I don't know if I'm formatting the equation wrong or if I am not setting my arguments right...

<form name="terminal" action="" method="post">
Mass of Object(kg): <input class="inputbox" type="number" name="mass" value="" /><br />

Drag Coefficient: <select name="drag"> 
                    <option value="1.28">Flat Plate = 1.28</option>
                    <option value="1.14">Prism = 1.14</option>
                    <option value="0.3">Bullet Shape = 0.3</option>
                    <option value="0.1">Sphere = 0.1</option>
                    <option value="0.05">Airfoil = 0.05</option>
                </select><br>

Frontal Area(m^2): <input class="inputbox" type="number" name="area" value="" /><br />
    <input type="submit" class="submit" name="submit" value="Calculate Terminal Velocity!" />
</form>
<br>
<br>

<?php 
    if ($_POST['submit']) {
        $mass = $_POST['mass'];
        $drag = $_POST['drag'];
        $area = $_POST['area'];
    }

    function terminalVelocity() {
        $num1 = (19.6 * $mass) / ($drag * 1.229 * $area);

        $terminal = sqrt($num1);
        return $terminal;
    }

        if ($mass == '' OR $drag == '' OR $area == '') {
            echo "Please enter values.";
        } else if ($mass <= 0 OR $area <= 0) {
                echo "Please enter values above 0.";
        } else {
            echo "The terminal velocity of the object is " . terminalVelocity() . "m/s.";
        }


?>
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doukanmang3687 2015-06-21 06:42
    已采纳

    Since you are using global variables inside your function you need to use them like this

    function terminalVelocity() 
    {
        global $mass,$drag,$area; //Global variables
        $num1 = (19.6 * $mass) / ($drag * 1.229 * $area);
    
        $terminal = sqrt($num1);
        return $terminal;
    }
    

    or you may use function with arguments.

    There are several other corrections you need to make. The complete code is

    <?php 
    if (isset($_POST['submit'])) 
    {
        $mass = $_POST['mass'];
        $drag = $_POST['drag'];
        $area = $_POST['area'];
    
    function terminalVelocity() {
        global $mass,$drag,$area;
        $num1 = (19.6 * $mass) / ($drag * 1.229 * $area);
    
        $terminal = sqrt($num1);
        return $terminal;
    }
    
        if ($mass == '' OR $drag == '' OR $area == '') {
            echo "Please enter values.";
        } else if ($mass <= 0 OR $area <= 0) {
                echo "Please enter values above 0.";
        } else {
            echo "The terminal velocity of the object is " . terminalVelocity() . "m/s.";
        }
    }
    
    ?>
    

    That being said, always try to avoid use of global. Either use arguments or have it inside a class.

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题