2015-09-18 150 views
-3

了其中有一个名为路径的项目,其中有一种折叠通过像琴弦组的对象的集合:$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中解决这个问题?

+2

你不能从一个字符串做到这一点,字符串不知道的也就是“子”的子项目,也许你需要看看RecursiveDirectoryIterator => http://php.net/manual/en /class.recursivedirectoryiterator.php – swidmann

回答

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);