为什么使用 unset() 函数将数组转换为对象?

Moh*_*aei 6 php arrays collections laravel

这是我的代码:

return ApiResponse::Json(200, '', ['categories' => $categories], 200);
Run Code Online (Sandbox Code Playgroud)

这是结果的屏幕截图:

输出 1

现在,我需要categories根据特定逻辑取消集合内的项目。所以我写了这个循环:

foreach ($categories as $key => $category) {
    if ($category->BusinessSubCategory->isEmpty())
          unset($categories[0]);
}

return ApiResponse::Json(200, '', ['categories' => $categories], 200);
Run Code Online (Sandbox Code Playgroud)

这是我的新结果:(被转换为一个对象)

输出 2

嗯.. 怎么了?取消设置某些项目后如何保留旧结构?

Sha*_*deh 4

尝试这个:

foreach ($categories as $key => $category) {
    if ($category->BusinessSubCategory->isEmpty())
          unset($categories[$key]);

}

$categories = array_slice($categories->toArray(), 0, count($categories));

return ApiResponse::Json(200, '', ['categories' => $categories], 200);
Run Code Online (Sandbox Code Playgroud)