2015-09-18 187 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);