GCD 和表单编码的问题


<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title>Euclidean Algorithm</title>
    </head>
    <body>
        <form method="get" action="EuclidAlgo.php">
            <fieldset>
<label for="remainder">Euclidean Algorithm : </label>
<input type="text" name="NumberA" value="<?php echo (isset($_GET['NumberA'])) ? $_GET['NumberA'] : 5; ?>"/>
<input type="text" name="NumberB" value="<?php echo (isset($_GET['NumberB'])) ? $_GET['NumberB'] : 5; ?>"/>
<input type="submit" name='submit' value="submit" />
</fieldset>
</form>
    <?php

    function gcd($a, $b)

    {
        $a = abs($a);
        $b = abs($b);
        if ($a == 0)
        {
            return $b;
        }
        elseif ($b == 0)
        {
            return $a;
        }
        elseif ($a > $b)
        {
            return gcd($b, $a % $b);
        }
        else
        {
            return gcd($a, $b % $a);
        }
    }
    function lcm($a, $b)
    {
        $a = abs($a);
        $b = abs($b);
        if  ($a > $b)
        {
            return ($b / gcd($a, $b)) * $a;
        }
        else
        {
            return ($a / gcd($a, $b)) * $a;
        }
    }
   if (isset($_GET['submit']))
{
    $a = $_GET['NumberA'];
    $b = $_GET['NumberB'];
} else {
     $a = 5;
     $b = 5;    
}
echo gcd($a, $b);
?>
<br />
<?php
echo lcm($a, $b);

    ?>

我的lcm函数没有正确运行,例如,当我输入100和150进入我的程序,而不是它返回50,它返回200任何想法,也如果我错过了任何重要的东西,我需要说明只是问,而不是抱怨或给我的工作一个低分。

Try

if (isset($_GET['submit']))

代替

if (isset($_GET['gcd']))

为什么?因为表单没有名为gcd的字段。


编辑:根据您的编辑,和一些建议。

修改你的HTML(建议)看起来像:

<input type="text" name="NumberA" value="<?php echo (isset($_GET['NumberA'])) ? $_GET['NumberA'] : 0; ?>"/>
<input type="text" name="NumberB" value="<?php echo (isset($_GET['NumberB'])) ? $_GET['NumberB'] : 0; ?>"/>
<input type="submit" name='submit' value="submit" />

这将防止弹出任何'undefined variable'错误。

然后以:

结束PHP
if (isset($_GET['submit']))
{
    $a = $_GET['NumberA'];
    $b = $_GET['NumberB'];
} else {
     $a = 0;
     $b = 0;    
}
echo gcd($a, $b);

最新更新