2017-02-25 105 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>