【问题标题】:Display multiple entries from JSON with PHP使用 PHP 显示来自 JSON 的多个条目
【发布时间】:2018-12-07 18:59:48
【问题描述】:

我的代码需要一些帮助,我不熟悉 JSON 和 PHP,但我正在学习

[
  {
 "eventId": 213,
"balls": [
  {
    "ball": 26,
    "id": 1
  },
  {
    "ball": 31,
    "id": 2
  }
]
  },
  {
"eventId": 212,
"balls": [
  {
    "ball": 22,
    "id": 1
      },
  {
    "ball": 33,
    "id": 2
  }
]
}
]

我有这个 JSON 和这部分 php 代码:

<table>
<?php
$url = 'external-link'; 

$data = file_get_contents($url);
$json_post = json_decode($data,true);
?>
    <table>
        <tbody>
        <?php foreach ($json_post as $event) : ?>
        <tr>
            <td><?php echo $event['eventId']; ?></td>
            <td><?php foreach ($json_post as $ball) : ?> <?php echo $ball['balls'][0]['ball']; ?> <?php endforeach; ?></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

我的代码显示有误,但不是我想要的样子:

 213 | 26 31 

 212 | 22 33

任何帮助将不胜感激,谢谢

【问题讨论】:

  • 循环 $event 而不是 $ball

标签: php arrays json string parsing


【解决方案1】:

您需要对当前事件进行内部 foreach 循环...

<td><?php foreach ($event['balls'] as $ball) : ?> <?php echo $ball['ball']; ?> <?php endforeach; ?></td>

如果并非所有元素都有此数据,您可以使用以下...

    <td><?php if(isset($event['balls'])):
        foreach ($event['balls'] as $ball) : 
               echo $ball['ball']; 
        endforeach; 
        endif;?></td>

完整代码:

$url = "url";
$data = file_get_contents($url);
$json_post = json_decode($data,true);
?>
    <table>
        <tbody>
        <?php foreach ($json_post as $event) : ?>
        <tr>
            <td><?php echo $event['eventId']; ?></td>
            <td><?php if(isset($event['balls'])):
                foreach ($event['balls'] as $ball) : 
                       echo $ball['ball'].' '; 
                endforeach; 
                endif;?></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

【讨论】:

  • 未定义索引:为 foreach() 提供的球和无效参数,不知道如何解决
  • 是的,我已经从主 JSON 中提取了一部分,它看起来完全一样...请看一下我的代码:
  • 我已将其更新为我正在使用的完整代码。我认为您的版本中缺少一些标签(&lt;/td&gt; 等)
  • 感谢 Nigel 抽出宝贵时间,您对我们很有帮助。最后,它奏效了。再次感谢!
猜你喜欢
相关资源
最近更新 更多
热门标签