我有这个脚本:
<?php
$result = mysql_query("SELECT * FROM high ORDER BY KC DESC LIMIT 20");
while($row = mysql_fetch_array($result))
{
echo $row['KC'];
echo "<br />";
}
?>
这个
<?php
$result = mysql_query("SELECT * FROM high ORDER BY DC DESC LIMIT 20");
while($row = mysql_fetch_array($result))
{
echo $row['DC'];
echo "<br />";
}
?>
我想要分配DC和KC并希望它在分割后显示值。
例如DC = 80且KC = 30
系统会将KC分为DC(80/30 = 2.666666666666667)
我试过这样做:
<?php
$result = mysql_query("SELECT * FROM high ORDER BY Runecraftlvl DESC LIMIT 20");
while($row = mysql_fetch_array($result))
{
echo $row['kills'] / $row['deaths'];
echo "<br />";
}
?>
它工作得很好,但是如果KC和DC两个变量都是0,它会给我这个错误:
警告:在第86行的/home/justxpp1/public_html/high/highscores.php中除以零
为什么会这样?
答案 0 :(得分:1)
这种情况正在发生,因为除以零是未定义的。如果KC和DC为零,则等式为0/0,即除以零。
要修复,您只需确保您的除数(除以的数字)不为零。
在你的例子的情况下,如果玩家从未死亡,你将得到除零。只需检查$row['deaths']
是否为零,如果是,则显示相应的符号。在许多情况下,接受零除以产生无穷大。
答案 1 :(得分:1)
虽然这是一个非常基本的问题,但这是一个可能的解决方案。你只需要检查第二个变量,即使它是0,第一个变量就可以了:
<?php
$result = mysql_query("SELECT * FROM high ORDER BY Runecraftlvl DESC LIMIT 20");
while($row = mysql_fetch_array($result))
{
echo ($row['deaths'] != 0) ? $row['kills'] / $row['deaths'] : '-';
echo "<br />";
}
?>
PD,它使用ternary operator。
我找到了post,其中说明了如何按照您的要求执行操作。对于您的特殊要求,这也很重要:How to avoid the “divide by zero” error in SQL?