0

これは、Minecraft サーバーに現在何人のプレイヤーがいるかを計算し、その値を 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] 内のすべてを「何もない」に置き換えるため、0 ~ 9 の数字のみが残され、適切な測定のために整数に型キャストされます。

于 2013-11-08T21:42:33.790 に答える