Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何循环对象内部的数组_Php - Fatal编程技术网

Php 如何循环对象内部的数组

Php 如何循环对象内部的数组,php,Php,我是个初学者,所以请容忍我。 我试图在表中显示JSON响应。 我已经检索到了JSON数据,但是结构有点复杂,我需要遍历它来获取我想要显示的数据 这是一个学校时间表,因此我选择的格式如下: Session | Monday | Tuesday | Wednesday ----------------------------------------------------------- Home Room | 2HRS - JS1.6 | 2HRS

我是个初学者,所以请容忍我。 我试图在表中显示JSON响应。 我已经检索到了JSON数据,但是结构有点复杂,我需要遍历它来获取我想要显示的数据

这是一个学校时间表,因此我选择的格式如下:

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天”,如果它存在的话。我希望这是有意义的,您只是回显值,而不是将值存储在表中。您只是回显值,而不是将值存储在表中。