2013-10-02 17 views
2

我的路徑的路徑作爲HTML層次PHP陣列

  • GRUPA131/LFA &他人/ LFA sub.zip
  • GRUPA131/LFA &他人/ lfandrei.pdf
  • GRUPA131 /以下列表Limbaje formale(利維烏迪努).PDF
  • GRUPA131/desktop.ini的
  • GRUPA131/LFA/lab1中的/ 1- Theodors的MacBook Air.cc
  • GRUPA131/LFA/lab1中的/ 1.cc
  • GRUPA131/LFA/lab1中的/ 1.cc-Theodors的MacBook Air.out
  • GRUPA131/LFA/lab1中的/ 1.cc.out
  • GRUPA131/LFA/lab1中的/2.cc
  • GRUPA131/LFA/lab1中的/ input3.in
  • GRUPA131/LFA/lab1中的/ tema1.zip
  • 亞歷-lamba.png
  • 亞歷-lamba_v2.png
  • ANALIZA點1 .pdf
  • ANALIZA點2.pdf
  • biblsit.docx
  • center.js

爲字符串,我想將它們轉換成具有HMTL文件夾層次表示的。所以,對於每個文件夾,我想列出它的文件和子文件夾等,直到列表完成。

這將是最好有PHP數組層次結構如下:

$dirs['dirname'] -> file 1 
    $dirs['dirname'] -> file 2 
    $dirs['dirname'] -> file 3 
    $dirs['dirname'] -> Folder 
    $dirs['dirname']['folder'] -> file 1 
    $dirs['dirname']['folder'] -> file 2.. 

我試圖分裂由'/'PATH_DELIMITER)每個字符串,但我無法弄清楚如何真正得到一個數組像我有之前提到。

此外,我的數組,具有整個路徑,是一個簡單的數組。不關聯或如此。

有人可以幫我弄清楚如何做到這一點?

謝謝!

回答

4

最簡單的方法將是遞歸函數。我的建議:

function build_folder_structure(&$dirs, $path_array) { 
    if (count($path_array) > 1) { 
     if (!isset($dirs[$path_array[0]])) { 
      $dirs[$path_array[0]] = array(); 
     } 

     build_folder_structure($dirs[$path_array[0]], array_splice($path_array, 1)); 
    } else { 
     $dirs[] = $path_array[0]; 
    } 
} 

$strings = array(
    'GRUPA131/LFA & others/lfa sub.zip', 
    'GRUPA131/LFA & others/lfandrei.pdf', 
    'GRUPA131/Limbaje formale (Liviu Dinu).pdf', 
    'GRUPA131/desktop.ini', 
    'GRUPA131/lfa/lab1/1-Theodors MacBook Air.cc', 
    'GRUPA131/lfa/lab1/1.cc', 
    'GRUPA131/lfa/lab1/1.cc-Theodors MacBook Air.out', 
    'GRUPA131/lfa/lab1/1.cc.out', 
    'GRUPA131/lfa/lab1/2.cc', 
    'GRUPA131/lfa/lab1/input3.in', 
    'GRUPA131/lfa/lab1/tema1.zip', 
    'alexandru-lamba.png', 
    'alexandru-lamba_v2.png', 
    'analiza carte 1.pdf', 
    'analiza carte 2.pdf', 
    'biblsit.docx', 
    'center.js' 
); 

$dirs = array(); 

foreach ($strings As $string) { 
    $path_array = explode('/',$string); 

    build_folder_structure($dirs,$path_array); 
} 

print_r($dirs); 

檢查:

What is a RECURSIVE Function in PHP?

http://php.net/manual/en/language.references.pass.php