从数组中删除对象 - 返回对象而不是数组

时间:2015-03-20 11:52:10

标签: php arrays

我循环遍历$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是一个数组,持有那个学生。我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

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)
));

不要在同一元素上使用foreachunset,最好是for,因为如果您认为unset会导致foreach出现问题关于foreach如何工作(迭代器,键,等等)

答案 1 :(得分:0)

Javascript数组是零索引的,因此您不能拥有一个包含一个元素且索引不为零的数组。

要从php数组中获取,需要在编码之前对其进行重新索引:

// re-index the array
$students = array_values($students);

return Response::json(array(
    'available' => $students
));

查看simple example here