我正在解码JSON响应并将其输出到表中。 JSON响应分为三个元素(Events
,Organizers
和Venues
)和Events
个节点引用Venues
和Organizers
元素的节点。< / p>
以下是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
我正在努力解决的问题是如何用Venue ID
(地点A,地点B)替换VenueName
(100,150),结果是:
Event title | Event venue | Event date
Concert One | Venue A | 2016-01-01
Concert Two | Venue B | 2016-01-02
有可能实现这个目标吗?
答案 0 :(得分:1)
我要做的是将您的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>';
}
答案 1 :(得分:1)
试试这个:
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>';
}
?>
一切都在一行!