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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)