如何创建URL树

时间:2018-06-10 07:55:29

标签: php url trie

我有一系列看起来像这样的网址:

$arr = [
    '/foo' => 'callback',
    '/foo/bar' => 'callback',
    '/foo/bar/baz' => 'callback',
    '/bar/baz' => 'callback',
];

我想将此数组转换为树结构,但我不知道该怎么做。我在explode字符上尝试/

它应该是这样的:

$arr = [
    'foo' => [
        0 => 'callback',
        'bar' => [
            0 => 'callback',
            'baz' => [
                0 => 'callback',
            ],
        ],
    ],
    'bar' => [
        'baz' => [
            0 => 'callback',
        ],
    ],
];

1 个答案:

答案 0 :(得分:-1)

我做了一个简单的功能,将你的阵列变成一个三维的阵列:

function tri_array($array) {
    $result = array();
    foreach ($array as $k => $v) {
        $ev = explode("/", $k);
        $ev[2] = $ev[2] ? $ev[2] : 0;
        $ev[3] = $ev[3] ? $ev[3] : 0;

        $result[$ev[1]][$ev[2]][$ev[3]] = $v;
    }
    return $result;
}