php - 开箱即用的 php 目录结构组件

标签 php json linux filesystems

有人知道现成的 php 类可以递归读取文件系统目录(包括所有文件和子目录)并返回结构的数组或对象或 JSON 字符串或 XML 吗?

我会自己做这件事,但一位客户刚打电话来,坚持要今天完成。是的。

最佳答案

您可以使用内置 RecursiveDirectoryIterator­Docs类来创建您想要的结果。在以下示例中,创建了一个分层数组:

$dir = '.';

$dirit = new RecursiveDirectoryIterator($dir);
$it = new RecursiveIteratorIterator($dirit);
$array = array();
foreach($it as $file)
{
    $path = substr($file, strlen($dir)+1);
    $parts = explode(DIRECTORY_SEPARATOR, $path);
    $filename = array_pop($parts);
    $dirname = implode(DIRECTORY_SEPARATOR, $parts);
    $build = &$array;
    foreach($parts as $part)
    {
        if (!isset($build[$part])) $build[$part] = array();
        $build = &$build[$part];
    }
    $build[] = $filename;
    unset($build);
}

$array 将包含列表:

Array
(
    [0] => .buildpath
    [1] => .project
    [.settings] => Array
        (
            [0] => org.eclipse.php.core.prefs
        )

    [array] => Array
        (
            [0] => array-keys.php
            [1] => array-stringkey-explode.php
        )
)

使用 json_encode­Docs可以简单地将它变成类似这样的东西:

json_encode($array);

{"0":".buildpath","1":".project",".settings":["org.eclipse.php.core.prefs"],"array":["array-keys.php","array-stringkey-e
xplode.php"]}

正如我在上面的评论中所写,glob也很有用。

关于php - 开箱即用的 php 目录结构组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8733154/

相关文章:

php - 使用 PHP 构造 JSON 输出

php - 在 PHP 中缓存 JSON 输出

java - 为什么在 linux 中缺少最大化和最小化选项,但在 windows 中工作

c++ - 如何在 linux asm 中正确地返回一个 double

具有多个持久层的 PHP DataMapper

php - 从 mysql 数据库发送和检索阿拉伯语数据

PHP/html 电子邮件表单不再提交到 mysql 数据库

java - 使用 JSON 和 PHP 从 Mysql DB 获取数据时出错

javascript - 如果静态值有效但来自 mySQL 的动态值无效,我如何使用 Javascript 在 Chart.js 中显示 JSON 数据?

linux - 内核升级后 : missing keyboard events