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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?