php - 从字符串到数组再到菜单

标签 php mysql multidimensional-array


我在数据库中有一个这样的列表:

    ID| VAL
    1 | menu1 > submenu1
    2 | menu1 > submenu1 > subsubmenu1
    3 | menu1 > submenu1 > subsubmenu2
    4 | menu1 > submenu1 > subsubmenu3
    5 | menu1 > submenu1 > subsubmenu3 > lastmenu1
    6 | menu2 > submenu1 
    ...

我会用它来生成像这样的有序列表:

- menu1
  - submenu1          (a href="#")
    - subsubmenu1     (a href="$id")
    - subsubmenu2     (a href="$id")
    - subsubmenu3     (a href="#")
      - lastmenu1     (a href="$id")
- menu2               (a href="#")
  - submenu1          (a href="$id")

如何使用 PHP(如果需要,还可以使用 jQuery)实现它?
先感谢您。

最佳答案

$a = [
    1 => "menu1 > submenu1",
    2 => "menu1 > submenu1 > subsubmenu1",
    3 => "menu1 > submenu1 > subsubmenu2",
    4 => "menu1 > submenu1 > subsubmenu3",
    5 => "menu1 > submenu1 > subsubmenu3 > lastmenu1",
    6 => "menu2 > submenu1 ",
];

function addMenuItem(&$arr, array $items, $id) {
    $a = &$arr;
    while ($name = array_shift($items)) {
        if (!isset($a[$name])) {
            $a[$name] = [
                'id' => $id,
                'items' => [],
            ];
        }

        $a = &$a[$name]['items'];
    }
}
$menu = [];
foreach($a as $id => $i) {
    $menuItem = explode(' > ', $i);
    addMenuItem($menu, $menuItem, $id);
}
var_dump($menu);

关于php - 从字符串到数组再到菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31402672/

相关文章:

php - 使用 PHP mysql 显示阿拉伯数据时出错

php - 消息系统。多个收件人,正在检索数据。最佳实践

mysql - Django : select all columns when innerjoin using extra without foreignkey

c++ - 使用 std::swap 交换二维数组中的行。它是如何工作的?

javascript - 使用数组中的元素创建多维数组

php - 如果没有复选框,我想删除删除按钮上的特定值

php - 在谷歌应用引擎的laravel coaster cms中使特定文件夹可写

php - 为什么 PDO 在 wamp 中不起作用?

MYSQL AND OR 在多对多表上

javascript - 使用 JSON 数组中的键填充选择下拉列表