首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php将相对url字符串解析为一个数组/对象

php将相对url字符串解析为一个数组/对象
EN

Stack Overflow用户
提问于 2014-06-16 07:05:00
回答 1查看 93关注 0票数 0

拆分这些相对链接的最佳解决方案是什么

代码语言:javascript
复制
folder-1/folder-2/item-a.txt
folder-1/folder-2/item-b.txt
folder-1/folder-3/item-c.txt
folder-1/folder-3/item-a.txt
folder-1/item-f.txt
folder-1/folder-2
folder-1/folder-3
folder-1
item-b.txt
item-g.txt

转换成php数组?

代码语言:javascript
复制
$testArray = array(
    "folder-1/" => array(
        "folder-2" => array(
            "item-a.txt",
            "item-b.txt"
        ),
        "folder-3" => array(
            "item-a.txt",
            "item-c.txt"
        ),
        "item-f.txt"
    ),
    "item-b.txt",
    "item-g.txt",
);
EN

回答 1

Stack Overflow用户

发布于 2014-06-16 08:19:31

给定最深路径的深度d和最坏情况下的路径数O (nk),假设查找是常量的(PHP中就是这种情况):

代码语言:javascript
复制
$root = array();

foreach ($I as $i) {
    $d =& $root;
    $P = explode("/", $i);

    foreach ($P as $p) {
        if (!array_key_exists($p, $d))
            $d[$p] = array();

        $d =& $d[$p];
    }
}

您可以通过对输入进行预处理来进一步优化这一点,方法是确保父目录出现在任何子目录之前。

然后,您可以确定必须添加下一个条目(因此array_key_exists-condition是多余的)。然后你只需要一种聪明的方法来知道在$r中把你的“光标”放在哪里。这段代码可能会更复杂一些。

此外,我也不能完全确定在哪一点上,预处理和通过$r导航的成本会提高一般的时间复杂度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24234909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档