我正在解码JSON响应并将其输出到表中。JSON响应分为三个元素(Events
, Organizers
和Venues
), Events
节点参考节点从Venues
和Organizers
元素中分离。
下面是print_r
显示JSON响应的示例:
Array
(
[Events] => Array
(
[0] => Array
(
[EventTitle] => Concert One
[Details] => Array
(
[VenueID] => 100
[EventDate] => 2016-01-01
)
)
[1] => Array
(
[EventTitle] => Concert Two
[Details] => Array
(
[VenueID] => 150
[EventDate] => 2016-01-02
)
)
)
[Venues] => Array
(
[0] => Array
(
[HallID] => 100
[VenueName] => Venue A
)
[1] => Array
(
[HallID] => 150
[VenueName] => Venue B
)
)
)
实际的JSON示例如下:
{
"Events": [
{
"EventTitle": "Concert One",
"Details": {
"VenueID": 100,
"EventDate": "2016-01-01"
}
},
{
"EventTitle": "Concert Two",
"Details": {
"VenueID": 150,
"EventDate": "2016-01-02"
}
}
],
"Venues": [
{
"HallID": 100,
"VenueName": "Venue A"
},
{
"HallID": 150,
"VenueName": "Venue B"
}
]
}
下面是我用来创建表的foreach循环:
<?php
foreach($results['Events'] as $values)
{
echo '<tr><td>' . $values['EventTitle'] . '</td>';
echo '<td>' . $values['Details']['VenueID'] . '</td>';
echo '<td>' . $values['Details']['EventDate'] . '</td></tr>';
}
?>
它可以很好地创建一个简单的表:
Event title | Event venue | Event date
Concert One | 100 | 2016-01-01
Concert Two | 150 | 2016-01-02
我正在努力的是如何用VenueName
(场地A,场地B)取代Venue ID
(100,150),这样的结果是:
Event title | Event venue | Event date
Concert One | Venue A | 2016-01-01
Concert Two | Venue B | 2016-01-02
这有可能实现吗?
试试这个:
foreach($results['Events'] as $values)
{
echo '<tr><td>' . $values['EventTitle'] . '</td>';
echo '<td>' . $results['Venues'][array_search($values['Details']['VenueID'], array_column($results['Venues'], 'HallID'))]['VenueName'] . '</td>';
echo '<td>' . $values['Details']['EventDate'] . '</td></tr>';
}
?>
所有内容在一行!
我要做的是将Organizers
和Venue
解析为它们自己的数组,以ID为键。所以你会得到一个像这样的数组(其中$arr
代表保存整个数组的变量)
$venue = [];
foreach($arr['Venue'] as $vals) {
$venue[$vals['HallID']] = $vals['VenueName'];
}
你可以用foreach
循环来构建它。然后,您将遍历Events
,使用键来获得正确的关系数据(对$organizers
和$venue
进行相同的操作)
foreach($results['Events'] as $values) {
echo '<tr><td>' . $values['EventTitle'] . '</td>';
echo '<td>' . $venue[$values['Details']['VenueID']] . '</td>';
echo '<td>' . $organizer[$values['Details']['OrganizerID']] . '</td>';
echo '<td>' . $values['Details']['EventDate'] . '</td></tr>';
}