如何使用PHP解析JSON中的对象的嵌套数组?
我尝试过,并能利用这段代码打印出整个JSON文件作为字符串:如何使用PHP解析JSON中的对象的嵌套数组?
$str_data = file_get_contents("DB/TEITC502_OS.json");
$data = json_decode($str_data,true);
echo $str_data[0];
具有以下结构的JSON文件:
[
{
"id": 1,
"name": "Overview of Operating system",
"hours": 4,
"sm": [
{
"smid": 1.1,
"smn": "Overview of Operating system objectives and functions"
},
{
"smid": 1.2,
"smn": "Evolution of OS"
}
]
},
{
"id": 2,
"name": "Process Management",
"hours": 10,
"sm": [
{
"smid": 2.1,
"smn": "Process"
},
{
"smid": 2.2,
"smn": "Process States"
},
{
"smid": 2.3,
"smn": "Process Control Block (PCB)"
}
]
}
]
但是我想打印出来每个这些细节(id,名称,小时,smid,smn)分别使用PHP。
我应该如何改变echo
声明才能完成此操作?
每一行呼应键和值,你可以递归做到这一点:
产量:
0 id : 1
0 name : Overview of Operating system
0 hours : 4
0 sm 0 smid : 1.1
0 sm 0 smn : Overview of Operating system objectives and functions
0 sm 1 smid : 1.2
0 sm 1 smn : Evolution of OS
1 id : 2
1 name : Process Management
1 hours : 10
1 sm 0 smid : 2.1
1 sm 0 smn : Process
1 sm 1 smid : 2.2
1 sm 1 smn : Process States
1 sm 2 smid : 2.3
1 sm 2 smn : Process Control Block (PCB)
非常感谢,这真的很有帮助。 – 2015-03-19 08:16:32
嘿有没有办法让这个嵌套列表呢? – 2015-03-19 18:06:25
当然,尝试一下,现在我不能因为我很忙,只能用手机,但明天早上我可以尝试,但它应该很容易。 – 2015-03-19 18:17:19
您可以使用循环来回显数组内容。我添加了一个检查,如果当前值是一个数组,所以我们也可以得到它的内部内容。
foreach ($data as $dat) {
if (is_array($dat)) {
foreach ($dat as $d) {
echo $d . '<br>';
}
} else {
echo $dat . '<br> ' ;
}
}
希望这会有所帮助。
您需要通过intire阵列循环。我会建议使用'foreach()'循环。 – 2015-03-19 08:02:48
没有额外的括号和分号(因为现在它被打印为字符串),我很抱歉它不会清楚。 @SchalkKeun,我想到了,但我不确定如何选择各种嵌套数组元素。你能否提供一些例子或参考? – 2015-03-19 08:09:07