获得了一个对象集合,这些对象有一个名为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中解决这个问题?
答案 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);