为什么使用 unset() 函数将数组转换为 object?
Why using unset() function cast the array to object?
这是我的代码:
return ApiResponse::Json(200, '', ['categories' => $categories], 200);
这是结果的屏幕截图:
现在,我需要根据特定逻辑取消设置 categories
集合中的项目。所以我写了这个循环:
foreach ($categories as $key => $category) {
if ($category->BusinessSubCategory->isEmpty())
unset($categories[0]);
}
return ApiResponse::Json(200, '', ['categories' => $categories], 200);
这是我的新结果:(转换为 object)
嗯..怎么了?取消设置某些项目后如何保留旧结构?
unset()
方法不会改变您的类型。
你的'array'不是数组而是集合。
尝试:
foreach ($categories as $key => $category) {
if ($category->BusinessSubCategory->isEmpty()) {
unset($categories[0]);
break;
}
}
$categories = array_values($categories->toArray());
return ApiResponse::Json(200, '', ['categories' => $categories], 200);
请注意,如果您要取消设置相同的元素,您应该在执行此操作后中断循环。
试试这个:
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);
看起来你正在使用关系,所以你可以不用循环
$category=Category::with('BusinessSubCategory')
->has('BusinessSubCategory')
->get();
或使用集合
$result= $categories->filter(function ($category){
return $category->BusinessSubCategory->isNotEmpty();
});
dd($result->values()->toArray());
如果 $categories
不是集合则使用 collect($categories)->filter...
这是我的代码:
return ApiResponse::Json(200, '', ['categories' => $categories], 200);
这是结果的屏幕截图:
现在,我需要根据特定逻辑取消设置 categories
集合中的项目。所以我写了这个循环:
foreach ($categories as $key => $category) {
if ($category->BusinessSubCategory->isEmpty())
unset($categories[0]);
}
return ApiResponse::Json(200, '', ['categories' => $categories], 200);
这是我的新结果:(转换为 object)
嗯..怎么了?取消设置某些项目后如何保留旧结构?
unset()
方法不会改变您的类型。
你的'array'不是数组而是集合。
尝试:
foreach ($categories as $key => $category) {
if ($category->BusinessSubCategory->isEmpty()) {
unset($categories[0]);
break;
}
}
$categories = array_values($categories->toArray());
return ApiResponse::Json(200, '', ['categories' => $categories], 200);
请注意,如果您要取消设置相同的元素,您应该在执行此操作后中断循环。
试试这个:
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);
看起来你正在使用关系,所以你可以不用循环
$category=Category::with('BusinessSubCategory')
->has('BusinessSubCategory')
->get();
或使用集合
$result= $categories->filter(function ($category){
return $category->BusinessSubCategory->isNotEmpty();
});
dd($result->values()->toArray());
如果 $categories
不是集合则使用 collect($categories)->filter...