Задать вопрос

Как вывести JSON в таблицу?

Добрый день. На сайт нужно вывести статус игровых серверов (речь идёт о мультиплеере игры ETS2). На сайте есть PHP SDK. При скачивании архива в нём 2 файла. Привожу коды обоих файлов.
sample.php
---------------
<?php

require_once("TruckMPApi.php");

// Setup api
$api = new TruckMPApi();

$servers = $api->GetServers();

var_dump($servers);

?>
---------------
TruckMPApi.php
---------------
<?php

class TruckMPApi
{
public function __construct()
{

}

public function GetServers()
{
return json_decode(@file_get_contents("api.ets2mp.com/servers"));
}
}

?>
------------------------
Сервера могут добавляться когда угодно. То есть вариант вижу в том что бы разбирать ответ в таблицу по принципу "пока не закончится".
Пример выполнения файла sample.php (точнее всё что выдаёт)
--------------------
object(stdClass)#2 (2) { ["error"]=> string(5) "false" ["response"]=> array(5) { [0]=> object(stdClass)#3 (9) { ["id"]=> int(1) ["ip"]=> string(20) "1.eu.game.ets2mp.com" ["port"]=> int(42860) ["name"]=> string(9) "Europe #1" ["shortname"]=> string(5) "EU #1" ["online"]=> bool(true) ["players"]=> int(1906) ["maxplayers"]=> int(3500) ["speedlimiter"]=> int(1) } [1]=> object(stdClass)#4 (9) { ["id"]=> int(3) ["ip"]=> string(20) "1.us.game.ets2mp.com" ["port"]=> int(42850) ["name"]=> string(16) "United states #1" ["shortname"]=> string(5) "US #1" ["online"]=> bool(true) ["players"]=> int(49) ["maxplayers"]=> int(1500) ["speedlimiter"]=> int(1) } [2]=> object(stdClass)#5 (9) { ["id"]=> int(4) ["ip"]=> string(20) "2.eu.game.ets2mp.com" ["port"]=> int(42880) ["name"]=> string(9) "Europe #2" ["shortname"]=> string(5) "EU #2" ["online"]=> bool(true) ["players"]=> int(1449) ["maxplayers"]=> int(2300) ["speedlimiter"]=> int(0) } [3]=> object(stdClass)#6 (9) { ["id"]=> int(6) ["ip"]=> string(18) "1.asia.game.kat.pw" ["port"]=> int(42860) ["name"]=> string(7) "Asia #1" ["shortname"]=> string(5) "AS #1" ["online"]=> bool(true) ["players"]=> int(13) ["maxplayers"]=> int(500) ["speedlimiter"]=> int(1) } [4]=> object(stdClass)#7 (9) { ["id"]=> int(7) ["ip"]=> string(20) "1.brazil.game.kat.pw" ["port"]=> int(42860) ["name"]=> string(16) "South America #1" ["shortname"]=> string(5) "SA #1" ["online"]=> bool(true) ["players"]=> int(94) ["maxplayers"]=> int(750) ["speedlimiter"]=> int(1) } } }
------------------------
Файл TruckMPApi.php на выводе даёт пустой экран.
Какие данные тут есть (объясню на примере 1 евросервера.
Адрес сервера - 1.eu.game.ets2mp.com
Порт - 42860
Название - Europe #1
Краткое имя - EU #1
Онлайн - true
Игроков на сервере - 1906
Максимум игроков - 3500
Наличие ограничителя скорости - 1
Мне же необходимо выводить табличку следующего варианта:
краткое имя - онлайн - сколько игроков сейчас/максимум игроков - ограничитель скорости

При этом онлайн выводиться в виде картинок:
онлайн - мойсат.ру/img/online.jpg
офлайн - мойсат.ру/img/ofline.jpg
Ограничитель скорости есть - мойсат.ру/img/speedyes.jpg
Ограничителя скорости нет - мойсат.ру/img/speedno.jpg
Картинки размером 20*20
----------------
Буду благодарен за наводку на литературку, хорошие примеры. Если кто намекнёт как делать - буду благодарен тоже. Просто с json (если это он) никогда не работал. За готовый код - гигантское спасибо от меня.
  • Вопрос задан
  • 835 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@bkosun
$api->GetServers(); возвращает объект, соответственно:

sample.php

<?php

require_once ("TruckMPApi.php");

$api = new TruckMPApi();

$servers = $api->GetServers();

?>

<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="content-type" content="text/html" />
	<title>Пример</title>
</head>

<body>

<table>
<? foreach ($servers->response as $obj): ?>
<tr>
	<td><?= $obj->name; ?></td>
	<td><?= (($obj->online) ? 'online' : 'offline'); ?></td>
	<td><?= $obj->players; ?>/<?= $obj->maxplayers; ?></td>
	<td><?= $obj->speedlimiter; ?></td>
</tr>
<? endforeach; ?>
</table>

</body>
</html>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы