Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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_Arrays - Fatal编程技术网

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

Php 从数组中删除对象-返回对象而不是数组,php,arrays,Php,Arrays,我正在遍历一个$students数组,并删除那些已经在$registered数组中的学生 $i=0; foreach($students as $student) { foreach($enrolled as $enrollment) { if ($enrollment->id == $student->id) { unset($students[$i]); } } $i++; }

我正在遍历一个
$students
数组,并删除那些已经在
$registered
数组中的学生

$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"
    }
}
我试图实现的是,
可用
是一个数组,容纳一个学生。我在这里做错了什么?

for($I=0;$Ifor($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)
));
{ $student=$students[$i]; foreach($注册为$注册) { 如果($enrollment->id==$student->id) { 未设置($students[$i]); } } } 返回响应::json(数组( “可用”=>数组_值($students) ));
不要在同一个元素上使用
foreach
unset
,最好是
for
,因为
unset
会给
foreach
带来一些问题,如果你想一想
foreach
是如何工作的(迭代器、键等等)Javascript数组的索引为零,因此不能有一个包含一个元素的数组和一个非零的索引

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

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

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

请参阅。

很抱歉,我不明白输出有什么问题。在可用数组中是否需要多个学生?@VitorLima输出是一个带有键的对象,而不是数组。您是否意识到同一元素上的foreach和unset非常糟糕?不能这样做从返回中删除
Response::json()
?我认为json()总是输出这样的散列,因为它试图将php数组转换为字符串。您可以通过调用Response::json(array('a','b','c'))来验证它,该数组仍然为输出提供相同的格式-即和对象,其中key是
$students
数组的索引。