Php 如何循环对象内部的数组
我是个初学者,所以请容忍我。 我试图在表中显示JSON响应。 我已经检索到了JSON数据,但是结构有点复杂,我需要遍历它来获取我想要显示的数据 这是一个学校时间表,因此我选择的格式如下:Php 如何循环对象内部的数组,php,Php,我是个初学者,所以请容忍我。 我试图在表中显示JSON响应。 我已经检索到了JSON数据,但是结构有点复杂,我需要遍历它来获取我想要显示的数据 这是一个学校时间表,因此我选择的格式如下: Session | Monday | Tuesday | Wednesday ----------------------------------------------------------- Home Room | 2HRS - JS1.6 | 2HRS
Session | Monday | Tuesday | Wednesday
-----------------------------------------------------------
Home Room | 2HRS - JS1.6 | 2HRS - JS1.6 | ....
08:30 - 08:45 | Homeroom | Homeroom | ....
| Ms Jones | Ms Jones | ....
| | |
Period 1 | 2ENS - JS1.6 | 2ENS - JS1.6 | ....
08:45 - 09:35 | English | English | ....
| Ms Jones | Ms Jones | ....
我要做的第一件事是在房间中循环,并将它们显示在一张桌子上
这是我的JSON响应的开始:
{
"data": [
{
"description": "Home Room",
"from_time": "08:30",
"to_time": "08:45",
"timetable": {
"1": {
"DayNumber": "1",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
"2": {
"DayNumber": "2",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
"3": {
"DayNumber": "3",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
"4": {
"DayNumber": "4",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
"5": {
"DayNumber": "5",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
}
}
},
{
"description": "Period 1",
"from_time": "08:45",
"to_time": "09:35",
"timetable": {
"1": {
"DayNumber": "1",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:45",
"EndTime": "09:35"
},
"2": {
"DayNumber": "2",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:45",
"EndTime": "09:35"
},
"3": {
"DayNumber": "3",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:45",
"EndTime": "09:35"
},
"4": {
"DayNumber": "4",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:45",
"EndTime": "09:35"
},
"5": {
"DayNumber": "5",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:45",
"EndTime": "09:35"
}
}
}
]}
这是我的一些代码
$response = json_decode($get_data, true);
$rooms = $response['data']['0']['timetable'];
?>
<?php foreach ($rooms['1'] as $v) { ?>
<tr>
<td></td>
<td class="first"><?php echo $v;} ?></td>
</tr>
我可能在这里完全偏离了轨道,所以任何指导都将不胜感激
*****************编辑**********************************
Session | Monday | Tuesday |
--------------------------------------------------------------------
"description" | "ClassCode" - "Room" | .... |
"from_time" - "to_time" or | "ClassDescription" | .... |
"StartTime" - "EndTime" | "StaffTitle" "StaffSurname" | .... |
---------------------------|-----------------------------|---------|
"description" | "ClassCode" - "Room" | .... |
"from_time" - "to_time" | "ClassDescription" | .... |
"StartTime" - "EndTime" | "StaffTitle" "StaffSurname" | .... |
| (if timetable #A exists then| |
| add below) | |
| ------------------- | |
| "ClassCode" - "Room" | |
| "ClassDescription" | |
| "StaffTitle" "StaffSurname" | |
---------------------------|-----------------------------|---------|
{
"description": "Recess",
"from_time": "10:25",
"to_time": "10:45",
"timetable": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
{
"description": "Period 3",
"from_time": "10:45",
"to_time": "11:35",
"timetable": {
"1": {
"DayNumber": "1",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"2": {
"DayNumber": "2",
"ClassCode": "2ARS",
"ClassDescription": "Art",
"Room": "AR.1.10",
"StaffNameExternal": "Betty Smith",
"StaffTitle": "Ms",
"StaffSurname": "Smith",
"StartTime": "10:45",
"EndTime": "11:35"
},
"3": {
"DayNumber": "3",
"ClassCode": "2PES",
"ClassDescription": "Physical Education",
"Room": "SP.1.1",
"StaffNameExternal": "Anne Doe",
"StaffTitle": "Mrs",
"StaffSurname": "Doe",
"StartTime": "10:45",
"EndTime": "11:35"
},
"4": {
"DayNumber": "4",
"ClassCode": "2MAS",
"ClassDescription": "Mathematics",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"5": {
"DayNumber": "5",
"ClassCode": "2LBS",
"ClassDescription": "Library",
"Room": "",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"5A": [
{
"DayNumber": "5",
"ClassCode": "2LBS2",
"ClassDescription": "Library",
"Room": "RC.1.2",
"StaffNameExternal": "Rebecca Williams",
"StaffTitle": "Mrs",
"StaffSurname": "Gallagher",
"StartTime": "10:45",
"EndTime": "11:35"
}
]
}
},
*******************编辑2***********************************
Session | Monday | Tuesday |
--------------------------------------------------------------------
"description" | "ClassCode" - "Room" | .... |
"from_time" - "to_time" or | "ClassDescription" | .... |
"StartTime" - "EndTime" | "StaffTitle" "StaffSurname" | .... |
---------------------------|-----------------------------|---------|
"description" | "ClassCode" - "Room" | .... |
"from_time" - "to_time" | "ClassDescription" | .... |
"StartTime" - "EndTime" | "StaffTitle" "StaffSurname" | .... |
| (if timetable #A exists then| |
| add below) | |
| ------------------- | |
| "ClassCode" - "Room" | |
| "ClassDescription" | |
| "StaffTitle" "StaffSurname" | |
---------------------------|-----------------------------|---------|
{
"description": "Recess",
"from_time": "10:25",
"to_time": "10:45",
"timetable": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
{
"description": "Period 3",
"from_time": "10:45",
"to_time": "11:35",
"timetable": {
"1": {
"DayNumber": "1",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"2": {
"DayNumber": "2",
"ClassCode": "2ARS",
"ClassDescription": "Art",
"Room": "AR.1.10",
"StaffNameExternal": "Betty Smith",
"StaffTitle": "Ms",
"StaffSurname": "Smith",
"StartTime": "10:45",
"EndTime": "11:35"
},
"3": {
"DayNumber": "3",
"ClassCode": "2PES",
"ClassDescription": "Physical Education",
"Room": "SP.1.1",
"StaffNameExternal": "Anne Doe",
"StaffTitle": "Mrs",
"StaffSurname": "Doe",
"StartTime": "10:45",
"EndTime": "11:35"
},
"4": {
"DayNumber": "4",
"ClassCode": "2MAS",
"ClassDescription": "Mathematics",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"5": {
"DayNumber": "5",
"ClassCode": "2LBS",
"ClassDescription": "Library",
"Room": "",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"5A": [
{
"DayNumber": "5",
"ClassCode": "2LBS2",
"ClassDescription": "Library",
"Room": "RC.1.2",
"StaffNameExternal": "Rebecca Williams",
"StaffTitle": "Mrs",
"StaffSurname": "Gallagher",
"StartTime": "10:45",
"EndTime": "11:35"
}
]
}
},
******************编辑3******************************************
Session | Monday | Tuesday |
--------------------------------------------------------------------
"description" | "ClassCode" - "Room" | .... |
"from_time" - "to_time" or | "ClassDescription" | .... |
"StartTime" - "EndTime" | "StaffTitle" "StaffSurname" | .... |
---------------------------|-----------------------------|---------|
"description" | "ClassCode" - "Room" | .... |
"from_time" - "to_time" | "ClassDescription" | .... |
"StartTime" - "EndTime" | "StaffTitle" "StaffSurname" | .... |
| (if timetable #A exists then| |
| add below) | |
| ------------------- | |
| "ClassCode" - "Room" | |
| "ClassDescription" | |
| "StaffTitle" "StaffSurname" | |
---------------------------|-----------------------------|---------|
{
"description": "Recess",
"from_time": "10:25",
"to_time": "10:45",
"timetable": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
{
"description": "Period 3",
"from_time": "10:45",
"to_time": "11:35",
"timetable": {
"1": {
"DayNumber": "1",
"ClassCode": "2ENS",
"ClassDescription": "English",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"2": {
"DayNumber": "2",
"ClassCode": "2ARS",
"ClassDescription": "Art",
"Room": "AR.1.10",
"StaffNameExternal": "Betty Smith",
"StaffTitle": "Ms",
"StaffSurname": "Smith",
"StartTime": "10:45",
"EndTime": "11:35"
},
"3": {
"DayNumber": "3",
"ClassCode": "2PES",
"ClassDescription": "Physical Education",
"Room": "SP.1.1",
"StaffNameExternal": "Anne Doe",
"StaffTitle": "Mrs",
"StaffSurname": "Doe",
"StartTime": "10:45",
"EndTime": "11:35"
},
"4": {
"DayNumber": "4",
"ClassCode": "2MAS",
"ClassDescription": "Mathematics",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"5": {
"DayNumber": "5",
"ClassCode": "2LBS",
"ClassDescription": "Library",
"Room": "",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "10:45",
"EndTime": "11:35"
},
"5A": [
{
"DayNumber": "5",
"ClassCode": "2LBS2",
"ClassDescription": "Library",
"Room": "RC.1.2",
"StaffNameExternal": "Rebecca Williams",
"StaffTitle": "Mrs",
"StaffSurname": "Gallagher",
"StartTime": "10:45",
"EndTime": "11:35"
}
]
}
},
$response=json\u decode($get\u data,true);
一场
星期一
星期二
星期三
星期四
星期五
这段代码假设json值从周一到周五有完整的时间表,并且这一天是按升序排序的。$response=json\u decode($get\u data,true);
一场
星期一
星期二
星期三
星期四
星期五
这段代码假设json值从周一到周五有完整的时间表,并且这一天是按升序排序的。首先确保json验证并简化它
{
"data": [{
"description": "Home Room",
"from_time": "08:30",
"to_time": "08:45",
"timetable": [
{
"DayNumber": "1",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "2",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "3",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "4",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "5",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "09:35"
}
]
}]
}
然后你可以做这样的事情
<?php
$get_data = file_get_contents('inf.json');
$response = json_decode($get_data, true);
$rooms = $response['data']['0']['timetable'];
?>
<?php foreach ($rooms as $v) {
echo $v['DayNumber'];
echo " ";
echo $v['ClassCode'];
echo " ";
echo $v['ClassDescription'];
echo $v['Room'];
echo " ";
echo $v['StaffNameExternal'];
echo " ";
echo $v['StaffTitle'];
echo "<br>";
}
?>
首先确保您的JSON也进行了验证和简化
{
"data": [{
"description": "Home Room",
"from_time": "08:30",
"to_time": "08:45",
"timetable": [
{
"DayNumber": "1",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "2",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "3",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "4",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "08:45"
},
{
"DayNumber": "5",
"ClassCode": "2HRS",
"ClassDescription": "Homeroom",
"Room": "JS.1.6",
"StaffNameExternal": "Sally Jones",
"StaffTitle": "Ms",
"StaffSurname": "Jones",
"StartTime": "08:30",
"EndTime": "09:35"
}
]
}]
}
然后你可以做这样的事情
<?php
$get_data = file_get_contents('inf.json');
$response = json_decode($get_data, true);
$rooms = $response['data']['0']['timetable'];
?>
<?php foreach ($rooms as $v) {
echo $v['DayNumber'];
echo " ";
echo $v['ClassCode'];
echo " ";
echo $v['ClassDescription'];
echo $v['Room'];
echo " ";
echo $v['StaffNameExternal'];
echo " ";
echo $v['StaffTitle'];
echo "<br>";
}
?>
您好,您能给我们举一个您希望最终结果如何的例子吗?我指的不是价值而是关键。嗨,基思。我用键而不是值更新了表。我希望这有帮助。谢谢。嗨,你能给我们举一个你希望最终结果如何的例子吗?我指的不是价值而是关键。嗨,基思。我用键而不是值更新了表。我希望这有帮助。谢谢,太棒了!谢谢你,大卫。但是,有几个问题,这完全是我的错,因为我没有包含完整的JSON响应。您遇到了什么问题吗?对不起,我无意中发布了我的评论。我在第一期文章中添加了第二次编辑。在第2个周期之后,有一个“休会期”,它不包含与其他周期相同的键/值。另一个问题是某些天有一个额外的周期。见编辑3。时段3有一个“第5A天”。这是因为学生们在交替的几周里会有不同的科目。我已经更新了编辑1中的表格,以反映格式,包括“第5A天”,如果它存在的话。我希望这是明智的,这太棒了!谢谢你,大卫。但是,有几个问题,这完全是我的错,因为我没有包含完整的JSON响应。您遇到了什么问题吗?对不起,我无意中发布了我的评论。我在第一期文章中添加了第二次编辑。在第2个周期之后,有一个“休会期”,它不包含与其他周期相同的键/值。另一个问题是某些天有一个额外的周期。见编辑3。时段3有一个“第5A天”。这是因为学生们在交替的几周里会有不同的科目。我已经更新了编辑1中的表格,以反映格式,包括“第5A天”,如果它存在的话。我希望这是有意义的,您只是回显值,而不是将值存储在表中。您只是回显值,而不是将值存储在表中。