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.

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

报告相同问题?

悬赏问题

  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化