来自已知键值的php多维数组

ron*_*tal 1 php arrays multidimensional-array

我在这个庞大的扁平单个数组中有一组键我想基本上将该数组扩展为由键组织的多维数组 - 这是一个例子:

'invoice/products/data/item1'
'invoice/products/data/item2'
'invoice/products/data/item2'
Run Code Online (Sandbox Code Playgroud)

=>

'invoice'=>'products'=>array('item1','item2','item3')
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做 - 上面的字符串的长度是可变的...

谢谢!

Lev*_*yan 5

$src = array(
'invoice/products/data/item1',
'invoice/products/data/item2',
'invoice/products/data/item2',
'foo/bar/baz',
'aaa/bbb'
);

function rsplit(&$v, $w)
{
    list($first, $tail) = explode('/', $w, 2);
    if(empty($tail)) 
    {
        $v[] = $first;
        return $v;
    }
    $v[$first] =  rsplit($v[$first], $tail);
    return $v;

}

$result = array_reduce($src, "rsplit");
print_r($result);
Run Code Online (Sandbox Code Playgroud)

输出是:

Array (
    [invoice] => Array
        (
            [products] => Array
                (
                    [data] => Array
                        (
                            [0] => item1
                            [1] => item2
                            [2] => item2
                        )

                )

        )

    [foo] => Array
        (
            [bar] => Array
                (
                    [0] => baz
                )

        )

    [aaa] => Array
        (
            [0] => bbb
        )

)
Run Code Online (Sandbox Code Playgroud)