Php 如何输出Veezi JSON子阵列?

Php 如何输出Veezi JSON子阵列?,php,arrays,json,foreach,elements,Php,Arrays,Json,Foreach,Elements,我正在使用Veezi API,这是他们的一些JSON输出: [{ "Id":"ST00000032", "Title":"Avatar", "People":[ { "Id":"0000000032", "FirstName":"Sam", "LastName":"Worthington", "Role":"Actor" },

我正在使用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>';
$allShows.='

With:'; foreach($theArray['People']作为$key=>$value){ $allShows.=$value->FirstName.''.$value->LastName.'('.$value->Role.')
; } $allShows.='

';

我没有得到任何值,只是“Role”周围嵌入的括号。返回了正确数量的括号,因此我非常确定我的循环正确。有人能发现我的问题吗?

你可以将整个json字符串作为数组处理。如果你取消注释我的
var\u export()
call,您可以看到数组以零索引元素开始

代码:()

$json=”[
{
“Id”:“ST00000032”,
“标题”:“阿凡达”,
“人”:[
{
“Id”:“00000000 32”,
“名字”:“山姆”,
“姓氏”:“沃辛顿”,
“角色”:“演员”
},
{
“Id”:“HO00000176”,
“名字”:“詹姆斯”,
“姓氏”:“卡梅隆”,
“角色”:“董事”
},
{
“Id”:“HO00000578”,
“名字”:“Sigourney”,
“姓氏”:“织工”,
“角色”:“演员”
}
],
“有声语言”:“英语”}
]';
//var_导出(json_解码($json,true));
$allShows='

带:'; foreach(json_解码($json,true)[0]['People']为$value){ $allShows.=“{$value['FirstName']}{$value['LastName']}({$value['Role']})
”; } $allShows.='

'; echo$allShows;
输出:

<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)<br></p>
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)</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
$allShows='

With:'; foreach(json_解码($json)[0]->人作为$value){ $allShows.=“{$value->FirstName}{$value->LastName}({$value->Role})
”; } $allShows.='

'; echo$allShows;//结果相同

如果它是我的项目,我不想在

之前使用最后一个

标记,因此我会使用如下内容:

foreach(json_decode($json)[0]->People as $value){
    $set[]="{$value->FirstName} {$value->LastName} ({$value->Role})";
}
echo '<p class="details">With: ',implode('<br>',$set),'</p>';
foreach(json_decode($json)[0]>人作为$value){
$set[]=“{$value->FirstName}{$value->LastName}({$value->Role})”;
}
回音“

With:”,内爆(“
”,$set),“

”;
输出:

<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)<br></p>
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)</p>

与:萨姆·沃辛顿(演员)
詹姆斯·卡梅隆(导演)
西格尼·韦弗(演员)


您可以将整个json字符串作为一个数组处理。如果取消注释my
var\u export()
调用,您可以看到数组以零索引元素开始

代码:()

$json=”[
{
“Id”:“ST00000032”,
“标题”:“阿凡达”,
“人”:[
{
“Id”:“00000000 32”,
“名字”:“山姆”,
“姓氏”:“沃辛顿”,
“角色”:“演员”
},
{
“Id”:“HO00000176”,
“名字”:“詹姆斯”,
“姓氏”:“卡梅隆”,
“角色”:“董事”
},
{
“Id”:“HO00000578”,
“名字”:“Sigourney”,
“姓氏”:“织工”,
“角色”:“演员”
}
],
“有声语言”:“英语”}
]';
//var_导出(json_解码($json,true));
$allShows='

带:'; foreach(json_解码($json,true)[0]['People']为$value){ $allShows.=“{$value['FirstName']}{$value['LastName']}({$value['Role']})
”; } $allShows.='

'; echo$allShows;
输出:

<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)<br></p>
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)</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
$allShows='

With:'; foreach(json_解码($json)[0]->人作为$value){ $allShows.=“{$value->FirstName}{$value->LastName}({$value->Role})
”; } $allShows.='

'; echo$allShows;//结果相同

如果它是我的项目,我不想在

之前使用最后一个

标记,因此我会使用如下内容:

foreach(json_decode($json)[0]->People as $value){
    $set[]="{$value->FirstName} {$value->LastName} ({$value->Role})";
}
echo '<p class="details">With: ',implode('<br>',$set),'</p>';
foreach(json_decode($json)[0]>人作为$value){
$set[]=“{$value->FirstName}{$value->LastName}({$value->Role})”;
}
回音“

With:”,内爆(“
”,$set),“

”;
输出:

<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)<br></p>
<p class="details">With: Sam Worthington (Actor)<br>James Cameron (Director)<br>Sigourney Weaver (Actor)</p>

与:萨姆·沃辛顿(演员)
詹姆斯·卡梅隆(导演)
西格尼·韦弗(演员)


what
print\r($theArray)
看起来,你有一个对象数组,所以json\u decode会给你一个数组,你需要两个foreach,或者如果你只想要第一个
foreach($theArray[0]['People']as…)
。如果您将JSON字符串解码为数组而不是对象,则所有嵌套的JSON对象也将是数组。在这种情况下,您应该使用
$value['FirstName']
而不是
$value->FirstName
。什么
打印($theArray)
look like,它看起来像是一个对象数组,所以json_decode会给你一个数组,你需要两个foreach,或者如果你只想要第一个
foreach($theArray[0]['People']as…)
。如果已将JSON字符串解码为数组而不是对象,则所有嵌套的JSON对象也将是数组。在这种情况下,应使用
$value['FirstName']
而不是
$value->FirstName