【问题标题】:List navigation from url addresses从 url 地址列出导航
【发布时间】:2020-02-17 06:44:59
【问题描述】:

我想从 url 地址创建一个导航,以便它们通过 url 正确嵌套。

  1. 我有一组 URL 地址及其 ID:
array(
    [0] => array(
        [id] => 1,
        [url] => "/admin/pages"
        ),
    [1] => array(
        [id] => 2,
        [url] => "/admin/store"
        ),
    [2] => array(
        [id] => 3,
        [url] => "/admin/store/products"
        )
     )
  1. 结果应该是这样的,所以我可以创建 <ul></ul> 导航:
[admin] => array(
     [pages] => 1,
     [store] => array(
            [products] => 3
        )
    )

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 我们希望看到您的研究证明并尝试自我解决。这看起来像一个“需求转储”。在这里提出问题并不意味着取代研究和“自己做某事”。
  • 我试过这个: foreach ($rows as $row) { $exploded = explode('/', $row['url']); foreach ($exploded as $explode) { $sidebar[$explode] = $explode; } }
  • 上一条评论同上。尝试回显或打印您的输出,然后从那里开始。
  • 从您的尝试开始,您需要构建大量脚本。您的示例数据非常小,可能不会公开您想要涵盖的所有场景。您对逻辑要求的简单英语解释对细节有点轻描淡写。请将所有相关信息写入您的问题作为编辑,然后删除您的 cmets。

标签: php arrays navigation


【解决方案1】:

我已经编写了一个 php 脚本来直接匹配上述要求。但如果url中有更多部分,请根据需要进行更改。

$array = array(
    0 => array(
        'id' => 1,
        'url' => "/admin/pages"
    ),
    1 => array(
        'id' => 2,
        'url' => "/admin/store"
    ),
    2 => array(
        'id' => 3,
        'url' => "/admin/store/products"
    )
);

$out = [];    

foreach ($array as $key => $arr) {
    $parts = array_filter(explode("/", $arr['url']));     
    $first = array_shift($parts);   
    $last = array_pop($parts);
    if (count($parts) > 0 && isset($out[$first][end($parts)])) {
        $out[$first][end($parts)] = [$last => $arr['id']];
    } else {
        $out[$first][$last] = $arr['id'];
    }
}

var_dump($out);

【讨论】:

    猜你喜欢
    • 2010-12-06
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多