2012-09-16 17 views
3

我有一個包含完整文件路徑的數組。 像這樣:代表文件路徑的PHP多維數組

[0] => "dir1/dir2/dir3/file.ext" 
[1] => "dir1/dir2/dir3/file2.ext" 
[2] => "dir1/dir2/dir3/file3.ext" 
[3] => "dir2/dir4/dir5/file.ext" 

我需要解析,並得到一個多維數組,像這樣:

[dir1] => [dir2] => [dir3] => file.ext 
          => file2.ext 
          => file3.ext 
[dir2] => [dir4] => [dir5] => file.ext 

任何想法?必須與結構的各種深度一起工作。

+2

[這個問題](http://stackoverflow.com/questions/8537148/string-with-array-structure-to-array/8537238 )談論的東西幾乎與你所需要的相同。 – Jon

回答

1

我已經完成了功課! :-)

http://ideone.com/UhEwd

代碼:

<?php 

function parse_paths_of_files($array) 
{ 
    $result = array(); 

    foreach ($array as $item) 
    { 
     $parts = explode('/', $item); 
     $current = &$result; 
     for ($i = 1, $max = count($parts); $i < $max; $i++) 
     { 
      if (!isset($current[$parts[$i-1]])) 
      { 
       $current[$parts[$i-1]] = array(); 
      } 
      $current = &$current[$parts[$i-1]]; 
     } 
     $current[] = $parts[$i]; 
    } 

    return $result; 
} 

$test = array(
    "dir1/dir2/dir3/file.ext", 
    "dir1/dir2/dir3/file2.ext", 
    "dir1/dir2/dir3/file3.ext", 
    "dir2/dir4/dir5/file.ext" 
); 

print_r(parse_paths_of_files($test)); 

?> 
+0

哦,這人真棒。非常感謝。你救我。 – Koga