我的数据库存储这样的列表:
ID | name
--- -----
1 | search
2 | search.categories
3 | search.categories.accessories
4 | search.categories.accessories.glasses
5 | search.categories.accessories.hats
6 | filters
7 | filters.payments
8 | filters.payments.creditcard
9 | filters.payments.debitcard
现在我想像这样递归地选择它:
[
name, childs[
name, childs[ ... ],
name, childs[ ... ],
name, childs[
name, childs[ ... ],
name, childs[ ... ],
],
],
name, childs[
name, childs[ ... ],
name, childs[ ... ],
name, childs[
name, childs[ ... ],
name, childs[ ... ],
],
]
]
实现这一目标的最佳方法是什么?直接从MySQL还是手动进行字符串处理?
答案 0 :(得分:1)
如果您正在使用Laravel,则可以使用array_set
并使用表的 name 列作为键来构建嵌套数组,以充分利用您已经存储的点符号
尽管您没有公开此功能的目的以及为什么要以这种方式构建此结构,但遵循一种可能的方法。
$structure = []
)array_set($structure, $listname, $value)
在您的示例中,我看不到$value
的来源,但我想您会理解的。
$structure = [];
foreach($rows as $row)
{
array_set($structure, $row->name, $value);
}