PHP动态多维数组创建

时间:2014-02-13 13:12:31

标签: php arrays data-structures multidimensional-array

我正在扫描文件夹,它是PHP文件的子文件夹。我想将文件夹和文件存储在PHP数组中,以便我可以在另一个页面中创建树视图。这是我获取文件路径的格式:

  • /home/project/index.php
  • /home/project/folder/myclass.php
  • /home/project/folder/myclass2.php
  • /home/project/folder/subfolder/anotherclass.php

我想在以下数组中获取这些文件:

  • [home] [project] = array('index.php')
  • [home] [project] [folder] = array(myclass.php,myclass2.php)
  • [home] [project] [folder] [subfolder] = array(anotherclass.php)

请注意,文件夹结构可以随时更改。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用内置(SPL)DirectoryIterator类和一个简单的递归函数。

未经测试的示例:

public function directoryToArray($directoryPath)
{
  $items = new DirectoryIterator($directoryPath);
  $data  = array();

  foreach($items as $item) {
    $name = $item->getFileName();

    if ($item->isFile()) {
      $data[] = $name;
    } 
    else if ($item->isDir()) {
      $data[$name] = directoryToArray($item->getPath());
    }
  }
  return $data;
}