好吧,我有一个来自保存信息的游戏服务器上的服务器查询的数组。我制作了一个进度条,显示当前玩家数量。这个进度条的百分比是这样计算的
<span style="width: ' . $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 . '%;"></span>
现在,如果服务器处于脱机状态,我会遇到问题,因为数组为空并且除法将为 0/0 并导致错误。我该如何绕过/解决这个问题?
也许使用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>';
}
您可以添加一个 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.
}
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>";
使用条件来计算百分比。您可以使用内联if
<span
style="width: ' . $data['gq_numplayers'] /
(($data['gq_maxplayers'] != 0)
? $data['gq_maxplayers']
: 1) * 100 . '%;"></span>
首先检查是否$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>
<?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 } ?>
您甚至可以使用内联速记方式...
echo '<span style="width: ' . ($data['gq_maxplayers'] != 0 ? $data['gq_numplayers'] / $data['gq_maxplayers'] * 100 : '0') . '%;"></span>';