PHP划分2个值& echo 1分值

时间:2013-01-27 19:05:28

标签: php math

我有这个脚本:

<?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中除以零

为什么会这样?

http://gyazo.com/26b3309c8e72d89ccc4cd32f4cdae7cd

2 个答案:

答案 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?