JSON解码嵌套数组PHP循环
问题描述:
我知道在*上有类似的问题,但我没有找到任何帮助解决我遇到的问题。JSON解码嵌套数组PHP循环
我有这样的JSON:
[{
"name": "Name0",
"services": [
[{
"Service": "Service00",
"Description": "Desc00"
}, {
"Service": "Service01",
"Description": "Desc01"
}]
]
}, {
"name": "Name1",
"services": [
[{
"Service": "Service10",
"Description": "Desc10"
}]
]
}]
我遍历它:
$quoteJson = json_decode($quoteJson);
foreach($quoteJson as $mydata) {
echo $mydata->name . "<br>";
foreach($mydata->services as $key => $value)
{
echo $value[$key]->Service . "<br>";
echo $value[$key]->Description . "<br>";
}
}
而结果我得到的是:
Name0
Service00
Desc00
Name1
Service10
Desc10
我通过我不能循环服务元素,得到:
Name0
Service00
Desc00
Service01
Desc01
Name1
Service10
Desc10
答
出于某种原因,services
是一个数组中的数组。做了小改动你的代码:
foreach($quoteJson as $mydata) {
echo $mydata->name . "<br>";
foreach($mydata->services[0] as $key => $value)
{
echo $value->Service . "<br>";
echo $value->Description . "<br>";
}
}
而现在它返回:
NAME0
Service00
Desc00
Service01
Desc01
名1
Service10
Desc10
答
由于$ mydata-> services是多维数组,你需要循环$值变量。
$quoteJson = json_decode($quoteJson);
foreach($quoteJson as $mydata) {
echo $mydata->name . "\n";
foreach($mydata->services as $key => $value)
{
foreach($value as $k=>$v){ // loop the array
echo $v->Service . "\n";
echo $v->Description . "\n";
}
}
}
答
输出与预期不符,因为您错过了内循环。下面的代码可以正常工作。
foreach($quoteJson as $mydata) {
echo $mydata->name . "<br>";
foreach($mydata->services as $key => $value)
{
foreach($value as $innerdata){
echo $innerdata->Service . "<br>";
echo $innerdata->Description . "<br>";
}
}
}
工作就像一个魅力!谢谢!会做一些resaerch,因为我不明白为什么需要[0]索引。 – anexo
当前您的'服务'对象包含一个嵌套数组。基本上:''服务“:[[]]'。您可以使用[0]访问“services”中的第一个元素,该元素包含您尝试访问的数据。 – Hollings