在php表中显示json内容

时间:2017-02-25 11:26:18

标签: php html json html-table slim

我试图在php表格中显示json内容,但我每次都会收到错误。我有一些语法错误,无法弄清楚我应该改变什么?

PS。尝试用Slim框架构建它

这是我的代码:

<div class="data-table-wrapper">
<?php
    $myData = file_get_contents("http://ergast.com/api/f1/current.json");
    $myObject = json_decode($myData);
?>
    <table class="data-table">
        <thead>
            <tr>
                <td>Date</td>
                <td>Time</td>
                <td>Round</td>
                <td>Circuit</td>
                <td>Location</td>
            </tr>
        </thead>
        <?PHP
        foreach($myObject as $key=>$item);
        ?>
        <tr>
            <td><?PHP echo $item->Date; ?></td>
            <td><?PHP echo $item->Time; ?></td>
            <td><?PHP echo $item->Round; ?></td>
            <td><?PHP echo $item->Circuit; ?></td>
            <td><?PHP echo $item->Location; ?></td>
        </tr>
        <?PHP
            }
        ?>
    </table>
</div>

我的错误是:

注意:第38行的C:\ xampp \ htdocs \ challenge \ app \ view \ challenge.php中的未定义属性:stdClass :: $ Date

注意:第39行的C:\ xampp \ htdocs \ challenge \ app \ view \ challenge.php中的未定义属性:stdClass :: $ Time

注意:未定义的属性:第40行的C:\ xampp \ htdocs \ challenge \ app \ view \ challenge.php中的stdClass :: $ Round

注意:第41行的C:\ xampp \ htdocs \ challenge \ app \ view \ challenge.php中的未定义属性:stdClass :: $ Circuit

2 个答案:

答案 0 :(得分:4)

与代码相比,我刚刚查看了您的json格式。映射到json的路径不正确。我已经纠正了以下内容;

请查看以下内容:

PHP代码

$myData = file_get_contents("http://ergast.com/api/f1/current.json");
$myObject = json_decode($myData);
$myObjectMap = $myObject->MRData->RaceTable->Races;

对于每种格式

  <?php foreach($myObjectMap as $key => $item): ?>
    <tr>
      <td><?PHP echo $item->date; ?></td>
      <td><?PHP echo $item->time; ?></td>
      <td><?PHP echo $item->round; ?></td>
      <td><?PHP echo $item->Circuit->circuitId; ?></td>
      <td><?PHP echo $item->Circuit->Location->country; ?></td>
    </tr>
  <?php endforeach; ?>

完整代码:

<html>
<head>
  <title>PHP</title>
</head>
<body>
  <?php
    $myData = file_get_contents("http://ergast.com/api/f1/current.json");
    $myObject = json_decode($myData);
    $myObjectMap = $myObject->MRData->RaceTable->Races;
  ?>
  <table>
    <thead>
      <tr>
        <td>Date</td>
        <td>Time</td>
        <td>Round</td>
        <td>Circuit</td>
        <td>Location</td>
      </tr>
    </thead>
    <tbody>
      <?php foreach($myObjectMap as $key => $item): ?>
        <tr>
          <td><?PHP echo $item->date; ?></td>
          <td><?PHP echo $item->time; ?></td>
          <td><?PHP echo $item->round; ?></td>
          <td><?PHP echo $item->Circuit->circuitId; ?></td>
          <td><?PHP echo $item->Circuit->Location->country; ?></td>
        </tr>
      <?php endforeach; ?>
    </tbody>
  </table>

</body>
</html>

答案 1 :(得分:0)

问题是解码数组的外观不同。在循环之前转储编码数组以了解正确的数据结构或使用JSON beautify service。还可以使用右上/小写来寻址属性。更新的循环可能如下所示:

<div class="data-table-wrapper">
<?php
$myData = file_get_contents("http://ergast.com/api/f1/current.json");
$myObject = json_decode($myData);

?>
   <table class="data-table">
   <thead>
    <tr>
     <td>Date</td>
      <td>Time</td>
      <td>Round</td>
      <td>Circuit</td>
      <td>Location</td>
    </tr>
    <?PHP
    foreach($myObject->MRData->RaceTable->Races as $key=>$item){
    ?>
  <tr>
    <td><?PHP echo $item->date; ?></td>
    <td><?PHP echo $item->time; ?></td>
    <td><?PHP echo $item->round; ?></td>
    <td><?PHP echo $item->Circuit->circuitName; ?></td>
    <td><?PHP echo $item->Circuit->Location->locality; ?></td>
  </tr>
 <?PHP
   }
 ?>
   </table>
       </div>
        </div>