从字符串创建关联数组

时间:2015-09-18 08:49:49

标签: php arrays associative-array

获得了一个对象集合,这些对象有一个名为path的项目,它有一种由字符串设置的折叠:$path = '/some/sub/any/path/'

现在我需要从该字符串创建一个数组,如:

array(
    'some'=>array(
        'sub'=>array(
            'objects'=>array(
                array('id'=>1),
                array('id'=>4)
            ),
            'any'=>array(
                'path'=>array(
                    'objects'=>array(
                        array('id'=>2),
                        array('id'=>3)
                    )
                )
            )
        )
    )
);

其实我正在寻找最好的做法。

任何想法,如何在PHP中解决这个问题?

1 个答案:

答案 0 :(得分:0)

这个怎么样?该函数将自定义路径添加到结果树中,并在那里分配自定义值。如果您需要稍后修改它,还会返回对创建节点的引用。

function &add_path(&$tree, $path, $value = NULL) {

    if (!is_array($path))
        $path = explode('/', $path);

    $node =& $tree;
    foreach ($path as $step)
        $node =& $node[$step];

    $node = $value;
    return $node;
}

// test
$tree = array();

$c =& add_path($tree, 'a/b/c', 'c');
$c = 'cc';

$d = add_path($tree, 'a/b/d', 'd');
$y = add_path($tree, 'x/y', 'y');

var_dump($tree);
var_dump($c);
var_dump($d);
var_dump($y);