Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP动态多维数组创建_Php_Arrays_Data Structures_Multidimensional Array - Fatal编程技术网

PHP动态多维数组创建

PHP动态多维数组创建,php,arrays,data-structures,multidimensional-array,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]

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

  • /home/project/index.php
  • /home/project/folder/myclass.php
  • /home/project/folder/myclass2.php
  • /home/project/folder/subfolder/anotherclass.php
我想在以下数组中获取这些文件:

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

请注意,文件夹结构可以随时更改。如何实现这一点?

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

一个未经测试的例子:


谢谢你的回答。我知道这种方法,但我想知道如何将平面数组转换为多维数组。这将是可行的解决办法,但这不是我想要的答案,谢谢。
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;
}