2017-02-25 64 views
0

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

PS。试图用超薄框架

这里建造它是我的代码:

<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> 

我的错误是:

公告:未定义的属性:用C stdClass的:: $日期:\ XAMPP \ htdocs中\挑战\在线应用程序\图\ challenge.php 38

公告:未定义的属性:stdClass的:: $时间在C:\ XAMPP \ htdocs中\上线挑战\程序\图\ challenge.php 39

注意:取消定义d属性:stdClass :: $第40行中的C:\ xampp \ htdocs \ challenge \ app \ view \ challenge.php中的回合

注意:未定义的属性:stdClass :: $ C:\ xampp \ htdocs \ challenge \ app \ view \ challenge.php on line 41

回答

3

我刚刚看过你的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> 
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>