我有一个菜单表:
id, slug, label, parent
父与id
有关系,所以如果你有:
1, 'foo-bar', 'Foo Bar', NULL
这是一个根项目,而:
2, 'foo', 'Foo ', 1
属于' foo-bar'。然后,您可以拥有属于foo
的商品,依此类推。
如何在PHP中将其转换为多维菜单数组?所以我可以这样做:
<?= $menu['foo-bar']['foo'] // echos 'Foo' ?>
我的要求与How to convert DB table with parent son relation to multi-dimensional array非常相似,但那里的答案并不奏效;它不是递归的。
答案 0 :(得分:1)
以下是foreach
(未经测试)可以做你想做的事情的例子。
<?php
// $results is your data from database
$menu = array();
foreach($results as $k => $result) {
$key = $result['id'];
$parent = $result['parent'];
if(!empty($parent)){
array_push($menu[$parent]['parents'], $result);
} else {
unset($results[$k]['parent'];
$menu[$key] = $result;
}
}
var_dump($menu);