这是一个非常基本的问题,可以通过快速浏览 PHP 手册轻松回答。也就是说,对于被视为在 SO 上解决的问题,必须发布答案然后接受。 John Conde 知道这一点,但偶尔会通过 cmets 回答问题——这会导致在 SO 上出现未解决/放弃的问题。我将提供一些与输入相关的解释,以帮助您了解foreach() 以及它与您的多维数组的关系。
foreach() 要求第一个值是输入数组的变量名。
根据您希望在循环中处理数组的哪些部分,对于 as 之后的内容,您有两种选择。
如果您只想使用数组中的值,则声明一个变量名来表示数组中的每个元素值。
如果要同时访问键和值,则必须为键声明一个变量名,然后为 =>,然后为值声明一个变量名。
这是你的数组的 php 声明:
$array=array(
0=>array("projectId"=>2,"seDate"=>"2017 - 04 - 13","startTime"=>"06: 57","taskToDo"=>"testing","studentSessionNo"=>1,"studentId"=>1),
1=>array("projectId"=>4,"seDate"=>"2017 - 05 - 27","startTime"=>"04: 53","taskToDo"=>"dodfddd","studentSessionNo"=>2,"studentId"=>1),
2=>array("projectId"=>8,"seDate"=>"2017 - 05 - 17","startTime"=>"01: 01","taskToDo"=>"rrrrrrr","studentSessionNo"=>5,"studentId"=>1)
);
如果您想遍历多维数组的每一层,那么您可以使用嵌套在 foreach 循环内的 foreach 循环来实现:
foreach($array as $index=>$subarray){
echo "For subarray number $index<br>";
foreach($subarray as $key=>$value){
echo "$key has value value<br>";
}
echo "<br>";
}
输出将是:
For subarray number 0
projectId has value 2
seDate has value 2017 - 04 - 13
startTime has value 06: 57
taskToDo has value testing
studentSessionNo has value 1
studentId has value 1
For subarray number 1
projectId has value 4
seDate has value 2017 - 05 - 27
startTime has value 04: 53
taskToDo has value dodfddd
studentSessionNo has value 2
studentId has value 1
For subarray number 2
projectId has value 8
seDate has value 2017 - 05 - 17
startTime has value 01: 01
taskToDo has value rrrrrrr
studentSessionNo has value 5
studentId has value 1
您会注意到我没有回显$subarray,因为无法回显数组。如果你想显示每个子数组的内容,你可以像这样使用print_r、var_dump()或var_export()的foreach循环:
foreach($array as $index=>$subarray){
var_export($subarray);
echo "<br>";
}
输出:
array (
'projectId' => 2,
'seDate' => '2017 - 04 - 13',
'startTime' => '06: 57',
'taskToDo' => 'testing',
'studentSessionNo' => 1,
'studentId' => 1,
)
array (
'projectId' => 4,
'seDate' => '2017 - 05 - 27',
'startTime' => '04: 53',
'taskToDo' => 'dodfddd',
'studentSessionNo' => 2,
'studentId' => 1,
)
array (
'projectId' => 8,
'seDate' => '2017 - 05 - 17',
'startTime' => '01: 01',
'taskToDo' => 'rrrrrrr',
'studentSessionNo' => 5,
'studentId' => 1,
)
最后,特别是针对您的问题,让您的输出正常工作的简单解决方法是将as 之后的变量名称更改为$value。这将允许您按预期访问子数组的值。
<div>
<?php
foreach($info as $value){
echo "<label>Session Date : ".$value['seDate']."</label>";
echo "<label>Start Time : ".$value['startTime']."</label>";
echo "<label>End Time : ".$value['taskToDo']."</label>";
echo "<label>Task To Do : ".$value['studentSessionNo']."</label><br />";
}
?>
</div>