如何输出 Veezi JSON 子数组?
How to output Veezi JSON subarray?
我正在使用 Veezi API,这是他们的一些 JSON 输出:
[{
"Id":"ST00000032",
"Title":"Avatar",
"People":[
{
"Id":"0000000032",
"FirstName":"Sam",
"LastName":"Worthington",
"Role":"Actor"
},
{
"Id":"HO00000176",
"FirstName":"James",
"LastName":"Cameron",
"Role":"Director"
},
{
"Id":"HO00000578",
"FirstName":"Sigourney",
"LastName":"Weaver",
"Role":"Actor"
}
],
"AudioLanguage":"English"
}]
我正在 PHP 中构建一个字符串,到目前为止($theArray
是我的 JSON 解码数组,这是我的代码:
$allShows .= '<p class="details">With: ';
foreach($theArray['People'] as $key => $value){
$allShows .= $value->FirstName.' '.$value->LastName.' ('.$value->Role.') <br>';
}
$allShows .= '</p>';
我没有得到任何值,只有 "Role" 周围嵌入的括号。正在返回正确数量的括号,所以我很确定我正在正确循环。谁能发现我的问题?
您可以将整个 json 字符串作为数组处理。如果取消注释我的 var_export()
调用,您会看到该数组以零索引元素开头。
代码:(Demo)
$json='[
{
"Id":"ST00000032",
"Title":"Avatar",
"People":[
{
"Id":"0000000032",
"FirstName":"Sam",
"LastName":"Worthington",
"Role":"Actor"
},
{
"Id":"HO00000176",
"FirstName":"James",
"LastName":"Cameron",
"Role":"Director"
},
{
"Id":"HO00000578",
"FirstName":"Sigourney",
"LastName":"Weaver",
"Role":"Actor"
}
],
"AudioLanguage":"English" }
]';
//var_export(json_decode($json,true));
$allShows='<p class="details">With: ';
foreach(json_decode($json,true)[0]['People'] as $value){
$allShows.="{$value['FirstName']} {$value['LastName']} ({$value['Role']})<br>";
}
$allShows.='</p>';
echo $allShows;
输出:
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)<br></p>
或者,如果你想使用一组对象,你可以使用这个:
$allShows='<p class="details">With: ';
foreach(json_decode($json)[0]->People as $value){
$allShows.="{$value->FirstName} {$value->LastName} ({$value->Role})<br>";
}
$allShows.='</p>';
echo $allShows; // same result
如果这是我的项目,我不希望 </p>
之前的最后一个 <br>
标签,所以我会使用这样的东西:
foreach(json_decode($json)[0]->People as $value){
$set[]="{$value->FirstName} {$value->LastName} ({$value->Role})";
}
echo '<p class="details">With: ',implode('<br>',$set),'</p>';
输出:
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)</p>
我正在使用 Veezi API,这是他们的一些 JSON 输出:
[{
"Id":"ST00000032",
"Title":"Avatar",
"People":[
{
"Id":"0000000032",
"FirstName":"Sam",
"LastName":"Worthington",
"Role":"Actor"
},
{
"Id":"HO00000176",
"FirstName":"James",
"LastName":"Cameron",
"Role":"Director"
},
{
"Id":"HO00000578",
"FirstName":"Sigourney",
"LastName":"Weaver",
"Role":"Actor"
}
],
"AudioLanguage":"English"
}]
我正在 PHP 中构建一个字符串,到目前为止($theArray
是我的 JSON 解码数组,这是我的代码:
$allShows .= '<p class="details">With: ';
foreach($theArray['People'] as $key => $value){
$allShows .= $value->FirstName.' '.$value->LastName.' ('.$value->Role.') <br>';
}
$allShows .= '</p>';
我没有得到任何值,只有 "Role" 周围嵌入的括号。正在返回正确数量的括号,所以我很确定我正在正确循环。谁能发现我的问题?
您可以将整个 json 字符串作为数组处理。如果取消注释我的 var_export()
调用,您会看到该数组以零索引元素开头。
代码:(Demo)
$json='[
{
"Id":"ST00000032",
"Title":"Avatar",
"People":[
{
"Id":"0000000032",
"FirstName":"Sam",
"LastName":"Worthington",
"Role":"Actor"
},
{
"Id":"HO00000176",
"FirstName":"James",
"LastName":"Cameron",
"Role":"Director"
},
{
"Id":"HO00000578",
"FirstName":"Sigourney",
"LastName":"Weaver",
"Role":"Actor"
}
],
"AudioLanguage":"English" }
]';
//var_export(json_decode($json,true));
$allShows='<p class="details">With: ';
foreach(json_decode($json,true)[0]['People'] as $value){
$allShows.="{$value['FirstName']} {$value['LastName']} ({$value['Role']})<br>";
}
$allShows.='</p>';
echo $allShows;
输出:
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)<br></p>
或者,如果你想使用一组对象,你可以使用这个:
$allShows='<p class="details">With: ';
foreach(json_decode($json)[0]->People as $value){
$allShows.="{$value->FirstName} {$value->LastName} ({$value->Role})<br>";
}
$allShows.='</p>';
echo $allShows; // same result
如果这是我的项目,我不希望 </p>
之前的最后一个 <br>
标签,所以我会使用这样的东西:
foreach(json_decode($json)[0]->People as $value){
$set[]="{$value->FirstName} {$value->LastName} ({$value->Role})";
}
echo '<p class="details">With: ',implode('<br>',$set),'</p>';
输出:
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)</p>