2011-02-09 45 views
1

我有這個陣列(它來自一個特定功能:一個目錄列表和過濾器上的文件擴展名):獲得完整的文件路徑從一個數組

Array 
(
    [Dir_test] = Array 
     (
      [dir_client] = Array 
       (
        [0] = index.html 
       ) 

      [0] = index.html 
     ) 
) 

而且我想獲得的東西等等。注意:該目錄可以有更多的子目錄。

Array 
(
    [0] = Dir_test/dir_client/index.html 
    [1] = Dir_test/index.html 
) 

THX對您有所幫助;)

+0

PHP有一個' is_array'函數可能會有所幫助。 http://php.net/manual/en/function.is-array.php – Mikel

回答

1

假設輸入數據是這樣的:

$arr = array(
    'Dir_test' => array (
     'dir_client' => array (
      0 => 'index.html' 
     ), 

     0 => 'index.html' 
    ) 
); 

最簡單的解決方案是一個遞歸的一個,是這樣的:

function add_dir($dir) { 
    global $dirs; 

    $dirs[] = $dir; 
} 

// pathsofar should always end in '/' 
function process_dir($dirarray, $pathsofar) { 
    foreach ($dirarray as $key => $value) { 
     if (is_array($value)) { 
      process_dir($value, $pathsofar . $key . '/'); 
     } else { 
      add_dir($pathsofar . $value); 
     } 
    } 
} 

process_dir($arr, ''); 

print_r($dirs); 

運行它:

$ php arr2.php 
Array 
(
    [0] => Dir_test/dir_client/index.html 
    [1] => Dir_test/index.html 
) 
+0

完美,thx;) – Flyingbeaver

0

寫遞歸函數,接受數組和字符串作爲參數,然後返回並自稱在數組中的每個關鍵這本身就是一個陣列。