【问题标题】:PHP Calculation and Bootstrap progress barPHP 计算和引导进度条
【发布时间】:2015-08-16 16:49:36
【问题描述】:

这是我的代码的一部分,用于计算我的世界服务器上现在有多少玩家,并将该值以百分比形式返回到引导进度条,以便它可以做它需要做的事情。

$playerson = $data[4];
$maxplayers = $data[5];

$percentage = ($playerson / $maxplayers) * 100;

echo $playerson;
echo $maxplayers;

?>
<div class="container">
<div class="progress">
<div class="progress-bar" role="progressbar" style="width: <?php echo $percentage; ?>%;">
</div>
</div>
</div>

现在我的问题是,$percentage 总是返回 0。但我不知道为什么。

这是我的完整文件:

<html>
  <head>
    <title>Bootstrap 101 Template</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
  </head>
<BODY>
<?php
// your servers ip
$ip= 'hub.exclusivecraft.org';
// your servers port
$port = '25565';

希望有人能找到解决办法。

function mc_status($host,$port) {
    $fp = fsockopen($host,$port,$errno,$errstr,$timeout=10);
        fputs($fp, "\xFE\x01");
        $response = '';
        $response .= fgets($fp);
        fclose($fp);
  $response = explode("\x00\x00", $response);
return $response;
}

$data = mc_status($ip,$port);

$playerson = $data[4];
$maxplayers = $data[5];

$percentage = ($playerson / $maxplayers) * 100;

echo $playerson;
echo $maxplayers;

?>
<div class="container">
<div class="progress">
<div class="progress-bar" role="progressbar" style="width: <?php echo $percentage; ?>%;">
</div>
</div>
</div>

<script src="http://code.jquery.com/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
  </body>
</html>

【问题讨论】:

  • $playerson 和 $maxplayers 是否返回值?
  • 它们返回值是的。
  • Maxplayers 为 700,而 playeron 不同
  • var_dump($percentage) 计算后返回什么?
  • int(0) :# 这很奇怪

标签: php twitter-bootstrap


【解决方案1】:

我不确定这些值是如何创建的。如果您有权访问返回的脚本 $playerson = $data[4] 和 $maxplayers = $data[5] 那么你也许可以在那里解决问题。

如果不试试……

$playerson = (int)preg_replace( '/[^0-9]/', '', $data[4]);
$maxplayers = (int)preg_replace( '/[^0-9]/', '', $data[5]);

$percentage = floor($playerson / $maxplayers) * 100; // floor (round down) optional

基本上将“字符串”$data[4] 和 $data[5] 中的所有内容替换为 'nothing',因此只留下数字 0-9 并将其类型转换为整数以便更好地衡量。

【讨论】:

  • 效果很好,我刚刚拆除了地板,因为我得到的回报很少。不过,谢谢!
  • 您可以将 floor 替换为 ceil 并将结果向上取整。
【解决方案2】:

我认为您的数组是空的,在第一步中您只创建了数组,但您没有为该数组分配任何值。 您只是将空白数组除以空白数组,因此您得到一个 0,请考虑一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多