0

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

$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>
4

2 回答 2

0

我不确定这些值是如何产生的。如果您有权访问返回 $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 并将类型转换为整数以获得良好的度量。

于 2013-11-08T21:42:33.790 回答
0

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

于 2015-08-16T08:49:36.090 回答