-1

タイトルをどのように付けるべきかわかりませんが、コードは次のとおりです。

if(isset($stats->playerStatus->server->serverIPv6Address)){ // prefer the IPv6 address if it's there`     
    $srvDetails = file_get_contents('https://api.kag2d.com/server/ip/' . $stats->playerStatus->server->serverIPv6Address . '/port/' . $stats->playerStatus->server->serverPort . '/status');
}elseif(isset($stats->playerStatus->server->serverIPv4Address)){
    $srvDetails = file_get_contents('https://api.kag2d.com/server/ip/' . $stats->playerStatus->server->serverIPv4Address . '/port/' . $stats->playerStatus->server->serverPort . '/status');
}


$srvContent   = json_decode($srvDetails, true);
$srvName      = $srvContent->serverName;
$playerString = 'Players: ' . $srvContent->currentPlayers . '/' . $srvContent->maxPlayers;

$srvName は空のままで、$playerString はただのプレイヤーです: /例としてhttps://api.kag2d.com/server/ip/199.168.184.8/port/23002/status

4

1 に答える 1

0

2 番目のパラメーターが trueであるため、オブジェクトを作成していません。結果json_decodeは配列です。

そのパラメーターを削除するか、アクセスを配列スタイルに変更してください。

このエラーは、基本的なデバッグ スキルと への呼び出しで簡単に発見できたはずvar_dump($srvContent)です。

更新 次のコードは私にとってはうまくいきます:

$json = file_get_contents("https://api.kag2d.com/server/ip/199.168.184.8/port/23002/status");
var_dump($json);
$decoded = json_decode($json, true);
var_dump($decoded);
var_dump(json_last_error());

2 番目のダンプの結果:

array(1) {
  'serverStatus' =>
  array(24) {
    'DNCycle' =>
    int(0)
    'DNState' =>
    int(0)
    'build' =>
    int(830)
    'connectable' =>
    int(1)
    'currentPlayers' =>
    int(2)
    'description' =>
    string(58) "Dreams, neon dreams, neon life, you will find, your, song."
    'firstSeen' =>
    string(19) "2012-07-10 18:26:53"
    'gameMode' =>
    string(15) "Team Deathmatch"
    'gameState' =>
    int(1)
    'gid' =>
    int(1)
    'gold' =>
    int(1)
    'lastUpdate' =>
    string(19) "2013-07-30 19:55:39"
    'mapH' =>
    int(122)
    'mapW' =>
    int(870)
    'maxPlayers' =>
    int(10)
    'maxSpectatorPlayers' =>
    int(0)
    'password' =>
    int(1)
    'playerList' =>
    array(2) {
      [0] =>
      array(1) {
        ...
      }
      [1] =>
      array(1) {
        ...
      }
    }
    'reservedPlayers' =>
    int(0)
    'serverIPv4Address' =>
    string(13) "199.168.184.8"
    'serverIPv6Address' =>
    string(17) "2001:470:4:727::6"
    'serverName' =>
    string(38) "TROUBLE - Beyond - password on forums."
    'serverPort' =>
    int(23002)
    'spectatorPlayers' =>
    int(0)
  }
}

あなたはどうですか?

于 2013-07-29T21:35:59.170 に答える