将JSON输出转换为HTML表

时间:2016-12-07 14:00:51

标签: php html json

所以我在这里有一个JSON输出https://squad-servers.com/api/?object=servers&element=detail&key=fupxq9hl1vkxb4yxhkggada7e0jz8p6w1

我想要做的是将其放入HTML表格中以创建我自己的状态页面,这就是我使用它的地方。

<?php
$json=file_get_contents("https://squad-servers.com/api/?object=servers&element=detail&key=fupxq9hl1vkxb4yxhkggada7e0jz8p6w1");
$data =  json_decode($json);

print_r($data); 

?>

stdClass Object
(
    [id] => 2272
    [name] => [ZXD] Zulu X-Ray Delta EU/UK #2
    [address] => 164.132.202.16
    [port] => 7797
    [private] => 0
    [password] => 0
    [query_port] => 27175
    [location] => United Kingdom
    [hostname] =>  Zulu X-Ray Delta EU/UK #2
    [map] => Kokan AAS v1
    [is_online] => 0
    [players] => 0
    [maxplayers] => 72
    [version] => a-8.8.116.11628
    [platform] => windows
    [uptime] => 97
    [score] => 4
    [rank] => 81
    [votes] => 0
    [favorited] => 0
    [comments] => 0
    [url] => https://squad-servers.com/server/2272/
    [last_check] => December 7th, 2016 08:50 AM EST
    [last_online] => December 7th, 2016 07:25 AM EST
)

但是我怎样才能把它变成一个表格,所以我可以回显/打印出数组的每个部分?

非常感谢,

4 个答案:

答案 0 :(得分:1)

$tbl = "<table><tr><th>".implode('</th><th>',array_keys((array)$data))."</th></tr>";
$tbl .= "<tr><td>".implode('</td><td>',(array)$data)."</td></tr></table>";
print $tbl;

......在前往罗马的路上。

$head=array();
$body=array();
foreach($data as $k=>$v){
  $head[]="<th>$k</th>";
  $body[]="<td>$v</td>";
}
print "<table><tr>".implode('',$head)."</tr><tr>".implode('',$body)."</tr></table>";

......另一种方式。

(每个使用过的函数都可以在php.net上找到)

这只适用于您的示例。并非每个json输出都可以轻松打印到html表中。

答案 1 :(得分:0)

您可以使用foreach打印每个值:

foreach ($data as $key => $value) {
  echo $value;
}

http://php.net/manual/en/control-structures.foreach.php

答案 2 :(得分:0)

您只需拨打print_r($data->name); echo $data->name即可拨打当前的api电话。

如果您有多个结果:

 <table>    
     <?php  foreach ($object as $value) {
            echo '<tr>';
           echo '<td>'.$value->name.'</td>';
           echo '<td>'.$value->address.'</td>';
           echo '<td>'.$value->hostname.'</td>';
           echo '<td>'.$value->uptime.'</td>';

           echo '</tr>';
        }
    }
?>
</table>

答案 3 :(得分:0)

json_decode有一个可选的第二个参数,用于确定您是否要关联array。默认情况下,此参数为false,因此您将获得一个更难处理的标准对象。相反,请确保您有一个关联的数组:

$data =  json_decode($json, true);
foreach ($data as $key => $value) {
    //Do something with $key and $value
}