【问题标题】:PHP dynamic multidimensional array creationPHP动态多维数组创建
【发布时间】:2014-02-13 13:12:31
【问题描述】:

我正在扫描一个文件夹,它是 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)

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

【问题讨论】:

    标签: php arrays data-structures multidimensional-array


    【解决方案1】:

    最简单的方法是使用内置 (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;
    }
    

    【讨论】:

    • 感谢您的回答。我知道这种方法,但我想知道如何将平面数组转换为多维数组。这将是可行的解决方法,但这不是我正在寻找的答案,谢谢。
    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多