Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP计算器中的除以0错误_Php - Fatal编程技术网

PHP计算器中的除以0错误

PHP计算器中的除以0错误,php,Php,我有一个简单的计算器,代码如下所示。我有3个输入和一个简单的方程式。但是,即使在单击“计算”按钮之前,我仍然会得到一个除以0的错误。我做错了什么 <?php if (isset($_POST['valuea'])) $valuea = $_POST['valuea']; if (isset($_POST['valueb'])) $valueb = $_POST['valueb']; if (isset($_POST['valuec'])) $valuec = $_POST['valuec'

我有一个简单的计算器,代码如下所示。我有3个输入和一个简单的方程式。但是,即使在单击“计算”按钮之前,我仍然会得到一个除以0的错误。我做错了什么

<?php
if (isset($_POST['valuea'])) $valuea = $_POST['valuea'];
if (isset($_POST['valueb'])) $valueb = $_POST['valueb'];
if (isset($_POST['valuec'])) $valuec = $_POST['valuec'];
$answer = ($valuea - $valueb) / $valuec;

echo <<<_END
<form method='post' action='/depreciation.php'>
<table border='0' width='500px' cellpadding='3' cellspacing='1' class="table">

<tr class="calcheading"><td colspan="2"><strong>Stright Line Depreciation</strong></td>         </tr>
<tr class="calcrow"><td>Enter Cost:</td><td align="center"><input type='text'     name='valuea' value="$valuea"/></td></tr>
<tr class="calcrow2"><td>End Salvage Value:</td><td align="center"><input type='text' name='valueb' value="$valueb"/></td></tr>
<tr class="calcrow"><td>Enter Estimated Life:</td><td align="center"><input type='text' name='valuec' value="$valuec"/></td></tr>
<tr class="submit"><td colspan="2"><input type='submit' value='Calculate'/></td></tr>
_END;

?>

<tr class="calcrow">
<td><i>The answer is:</td>
<td align="center"><input type="text" value="<?php echo round($answer)?>"></td></i>
</tr>
</table>
</form>
$answer正在页面加载时进行评估,正如dc2评论的那样,没有任何东西可以阻止您在加载页面后立即执行代码

$answer=$valuea-$valueb/$valuec

这会在加载页面时产生错误

要避免这种情况,您应该在进行除法之前检查0:

if($valuec == 0){
    $answer = "TO INFINITY AND BEYOND";
}else{
   //division here
}

因此,看起来您需要检查前三行代码,以查看是否设置了$\u POST[]变量,但不管它们是否设置,您都可以继续为$answer指定一个值。那么,如果没有设置这些值,会发生什么呢

我已经有一段时间没有编写PHP了,所以我可能错了,但是您可能希望在执行任何代码之前检查$\u POST[]中的数据,如果您发现没有设置任何内容,请将用户重定向到他们应该填写的表单

只有我的$0.02-如果有效,请告诉我。

您可以更改

$answer = ($valuea - $valueb) / $valuec;

然后,您将避免使用空值的计算,我将利用它并在除法之前测试0,如下所示:

<?php
$valuea='';
$valueb='';
$valuec='';
$answer='';

if (isset($_POST['valuea'])) $valuea = $_POST['valuea'];
if (isset($_POST['valueb'])) $valueb = $_POST['valueb'];
if (isset($_POST['valuec'])) $valuec = $_POST['valuec'];
if(is_numeric($valuea) && is_numeric($valueb) && is_numeric($valuec))
{
    if($valuec=='0')
    {
        $answer ="Error: Dividing by zero";
    }
    else{
        $answer = ($valuea - $valueb) / $valuec;
    }
}

echo <<<_END
<form method='post'>
<table border='0' width='500px' cellpadding='3' cellspacing='1' class="table">
<tr class="calcheading"><td colspan="2"><strong>Stright Line Depreciation</strong></td></tr>
<tr class="calcrow"><td>Enter Cost:</td><td align="center"><input type="text" name="valuea" value="$valuea" /></td></tr>
<tr class="calcrow2"><td>End Salvage Value:</td><td align="center"><input type="text" name="valueb" value="$valueb" /></td></tr>
<tr class="calcrow"><td>Enter Estimated Life:</td><td align="center"><input type="text" name="valuec" value="$valuec" /></td></tr>
<tr class="submit"><td colspan="2"><input type="submit" value="Calculate" /></td></tr>
_END;

?>
<tr class="calcrow"><td><em>The answer is:</em></td><td align="center"><input type="text" value="<?php echo is_numeric($answer)?round($answer):$answer; ?>"></td></tr>
</table>
</form>

这是一个和。

JavaScript?你的JavaScript在哪里?你为什么想要PHP中的计算器?没有什么能阻止你的代码立即执行。。。你的问题是PHP,而不是Javascript。对,代码确实会执行,但我正在寻找一种方法,在页面加载时消除被零除的错误。
<?php
$valuea='';
$valueb='';
$valuec='';
$answer='';

if (isset($_POST['valuea'])) $valuea = $_POST['valuea'];
if (isset($_POST['valueb'])) $valueb = $_POST['valueb'];
if (isset($_POST['valuec'])) $valuec = $_POST['valuec'];
if(is_numeric($valuea) && is_numeric($valueb) && is_numeric($valuec))
{
    if($valuec=='0')
    {
        $answer ="Error: Dividing by zero";
    }
    else{
        $answer = ($valuea - $valueb) / $valuec;
    }
}

echo <<<_END
<form method='post'>
<table border='0' width='500px' cellpadding='3' cellspacing='1' class="table">
<tr class="calcheading"><td colspan="2"><strong>Stright Line Depreciation</strong></td></tr>
<tr class="calcrow"><td>Enter Cost:</td><td align="center"><input type="text" name="valuea" value="$valuea" /></td></tr>
<tr class="calcrow2"><td>End Salvage Value:</td><td align="center"><input type="text" name="valueb" value="$valueb" /></td></tr>
<tr class="calcrow"><td>Enter Estimated Life:</td><td align="center"><input type="text" name="valuec" value="$valuec" /></td></tr>
<tr class="submit"><td colspan="2"><input type="submit" value="Calculate" /></td></tr>
_END;

?>
<tr class="calcrow"><td><em>The answer is:</em></td><td align="center"><input type="text" value="<?php echo is_numeric($answer)?round($answer):$answer; ?>"></td></tr>
</table>
</form>