0

好吧,我有一个来自保存信息的游戏服务器上的服务器查询的数组。我制作了一个进度条,显示当前玩家数量。这个进度条的百分比是这样计算的

<span style="width: ' . $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 . '%;"></span>

现在,如果服务器处于脱机状态,我会遇到问题,因为数组为空并且除法将为 0/0 并导致错误。我该如何绕过/解决这个问题?

4

7 回答 7

5

也许使用if语句将是解决方案。

IE

if ($data['gq_maxplayers'] == 0) {
   echo '<span style="width: 0%;"></span>';
} else {
   echo '<span style="width: ' . $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 . '%;"></span>';
}
于 2013-05-13T17:57:07.363 回答
1

您可以添加一个 if 来检查数据是否为空。您可以array_key_exists('gq_numplayers', $data)用来检查服务器上是否存在问题。

如果有问题,您可以显示任何您想要的消息。下面是一个代码示例:

if (array_key_exists('gq_numplayers', $data)) {
    <span style="width: ' . $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 . '%;"></span>
}
else {
    // Do whatever you want.
}

于 2013-05-13T17:56:05.627 回答
1

0不要修改值,而是在执行计算之前检查分母是否存在。如果是0,则将百分比显示为0%。如果分母0是意外情况,那么您可能想要显示错误消息或说数据不可用。例如:

$percentage = 0;
if ($data['gq_maxplayers'] > 0) {
   $percentage = ($data['gq_numplayers'] / $data['gq_maxplayers']) * 100;
}

echo '<span style="width: ' . $percentage . '%;"></span>";
于 2013-05-13T17:58:41.333 回答
0

使用条件来计算百分比。您可以使用内联if

<span 
 style="width: ' . $data['gq_numplayers'] / 
                   (($data['gq_maxplayers'] != 0) 
                     ? $data['gq_maxplayers'] 
                     : 1) * 100 . '%;"></span>
于 2013-05-13T17:58:36.067 回答
0

首先检查是否$data['gq_maxplayers']为 0,然后计算元素的宽度。

<?php $data['gq_maxplayers'] = ($data['gq_maxplayers'] == 0) ? 0 : $data['gq_maxplayers']; ?>
<span style="width: ' . $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 . '%;"></span>
于 2013-05-13T17:58:40.110 回答
0
<?php if ($data['gq_maxplayers']>0 ) { ?>
    <span style="width: ' . $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 . '%;"></span>
<?php } else{ ?>
    <span style="width:0%;"></span>
<?php } ?>
于 2013-05-13T18:00:39.030 回答
0

您甚至可以使用内联速记方式...

echo '<span style="width: ' . ($data['gq_maxplayers'] != 0 ? $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 : '0') . '%;"></span>';
于 2013-05-13T18:10:27.590 回答