PHP数组路径作为HTML层次结构

时间:2013-10-02 14:13:45

标签: php html arrays

我有以下路径列表

  • GRUPA131 / LFA& others / lfa sub.zip
  • GRUPA131 / LFA&他人/ 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
  • 亚历-lamba.png
  • 亚历-lamba_v2.png
  • analiza carte 1.pdf
  • analiza carte 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),但我无法弄清楚如何实际获得我之前提到过的数组。

此外,我的整个路径的数组是一个简单的数组。不是联想的。

有人可以帮我弄明白怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分: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