PHP-如何修改对象数组中的类别名称和子类别名称?
查看我的现有代码:PHP-如何修改对象数组中的类别名称和子类别名称?,php,mysql,arrays,laravel,foreach,Php,Mysql,Arrays,Laravel,Foreach,查看我的现有代码: class CategoryController extends ApiController { public function getCategory(){ $categories = DB::table('products') ->select('category', 'category_name') ->distinct('category', 'category_name') ->
class CategoryController extends ApiController
{
public function getCategory(){
$categories = DB::table('products')
->select('category', 'category_name')
->distinct('category', 'category_name')
->get();
$newArr = [];
foreach ($categories as $value) {
$newArr[$value->category_name] = [];
$subcategories = DB::table('products')
->select('subcategory_name')
->where('subcategory', 'LIKE', '%'. $value->category.'%')
->distinct('subcategory')
->get()->pluck('subcategory_name');
array_push($newArr[$value->category_name], $subcategories);
}
return response()->json([
'data' => $newArr
]);
}
}
答案似乎是:
"data": {
"Food": [
[
"Chicken",
"Egg",
"Pie"
]
],
"Drinks": [
[
"Beer",
"Juice",
"Water"
]
],
但这不是我想要的回应。我需要一个:
data: {
{
category_name : "Food",
subcategories_name : ["Chicken", "Eggs", "Pie"]
}
{
category_name : "Drinks",
subcategories_name : ["Beer", "Juice", "Water"]
}
}
如果你不理解代码的某些部分,请询问我。我在产品表中有一些字段,如类别、类别名称、子类别、子类别名称。它所属的代码类别和子类别是相同的代码。我所需要的就是像上面写的那样写一个回复。我的逻辑是将所有类别放入类别和子类别中,我设置所有子类别,然后将它们合并到一个数组中。这对我来说并不重要,重要的是结果。谢谢
另外,我不知道我的数据库对您有多重要,但有一个产品表和4个字段=类别、子类别、类别名称、子类别名称。仅此而已。您需要在输出数组中手动分配键
foreach ($categories as $value) {
$subcategories = DB::table('products')
->select('subcategory_name')
->where('subcategory', 'LIKE', '%'. $value->category.'%')
->distinct('subcategory')
->get()->pluck('subcategory_name');
$newArr[] = [
'category_name' => $value->category_name;
'subcategories_name' => subcategories;
];
}
$newArrValues = array_values($newArr);
$output = json_encode($out);
好的,我的回答现在是这样的:“数据:{“0”:{“类别名称”:“食品”,“子类别名称”:[“鸡肉”,“鸡蛋”,“水],},“1”:{“类别名称”:“饮料”,“子类别名称”:[“啤酒”,“水”, ] },可以删除此索引0:和1…?删除循环中的第一行。这是因为
$newArr
是索引数组。我想您可以尝试从数组中获取值,然后将其编码为json。我将更新answer@devnullψ谢谢。你真的应该学会使用连接。连接会是什么样子?这应该只是一个提示。我真的不想详细说明:-)