我正在尝试执行一个mysql查询,该查询将创建一个父项目数组,其子项目位于下方。但我不是百分百肯定的。以下是我到目前为止所做的事情:
SELECT * FROM categories as rf ORDER BY parent,name ASC
这是输出的内容(数组):
Array
(
[0] => stdClass Object
(
[id] => 7
[name] => Safety Clothing
[parent] => 0
)
[1] => stdClass Object
(
[id] => 8
[name] => Safety Footwear
[parent] => 0
)
[2] => stdClass Object
(
[id] => 9
[name] => Workwear
[parent] => 0
)
[3] => stdClass Object
(
[id] => 4
[name] => Polos
[parent] => 7
)
[4] => stdClass Object
(
[id] => 3
[name] => Shirts
[parent] => 7
)
[5] => stdClass Object
(
[id] => 6
[name] => Jackets
[parent] => 9
)
[6] => stdClass Object
(
[id] => 1
[name] => Pants
[parent] => 9
)
[7] => stdClass Object
(
[id] => 2
[name] => Shirts
[parent] => 9
)
[8] => stdClass Object
(
[id] => 5
[name] => Shorts
[parent] => 9
)
)
正如您所看到的那样,子项具有父项的id(parent设置为0),但我不确定如何将它们合并在一起以执行如下所示的数组:
父
- 孩子
- 孩子
父
父
- 孩子
- 孩子
- 孩子
任何帮助将不胜感激:)
答案 0 :(得分:2)
另外
SELECT parent,GROUP_CONCAT(name)作为名称FROM FROM类别为rf GROUP BY 1;
第一列中父ID的每个父级都会得到一行,第二列中的子名用逗号分隔。
答案 1 :(得分:1)
如果可以使用该数组中的数据构建嵌套数组: 每个对象都有一个Array变量。然后在构建初始数组之后,通过解析初始数组手动将子项移动到其父项下。
解析的方法是递归的,并且将采用它当前正在构建的初始数组和子数组。