我正在循环遍历一个$students
数组,并移除那些已经在$enrolled
数组中的数组。
$i=0;
foreach($students as $student)
{
foreach($enrolled as $enrollment)
{
if ($enrollment->id == $student->id)
{
unset($students[$i]);
}
}
$i++;
}
return Response::json(array(
'available' => $students
));
这给我留下了以下输出:
"available": {
"2": {
"id": "4"
"user_id": "4",
"teacher_id": null,
"parent_id": "4",
"active": "1"
}
}
我试图实现的是available
是一个数组,容纳一个学生。我在这里做错了什么?
Javascript数组是零索引的,因此不能有一个只有一个元素且索引不是零的数组。
要从php数组中获得它,您需要在对其进行编码之前对其进行重新索引:
// re-index the array
$students = array_values($students);
return Response::json(array(
'available' => $students
));
这里有一个简单的例子。
for($i = 0; $i < count($students); $i++)
{
$student = $students[$i];
foreach($enrolled as $enrollment)
{
if ($enrollment->id == $student->id)
{
unset($students[$i]);
}
}
}
return Response::json(array(
'available' => array_values($students)
));
不要在同一个元素上使用foreach
和unset
,最好是for
,因为unset
会给foreach
带来一些问题,如果你考虑一下foreach
是如何工作的(迭代器、键等等)