我尝试过并且能够使用以下代码将整个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)"
}
]
}
]
但是我想用PHP分别打印出这些细节(id,name,hours,smid,smn)。
我应该对echo
语句进行哪些更改才能完成此操作?
答案 0 :(得分:2)
您可以使用循环来回显数组内容。我添加了一个检查,如果当前值是一个数组,所以我们也可以得到它的内部内容。
foreach ($data as $dat) {
if (is_array($dat)) {
foreach ($dat as $d) {
echo $d . '<br>';
}
} else {
echo $dat . '<br> ' ;
}
}
希望这有帮助。
答案 1 :(得分:2)
要在每一行中回显键和值,您可以递归地执行:
function echo_array($a, $key){
foreach($a as $key1 => $array1){
if(!is_array($array1)){
echo "$key $key1 : $array1<br/>";
}else{
echo_array($array1,"$key $key1");
}
}
}
echo_array($data,'');
收率:
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)