作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人知道现成的 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/
当我开始我的 openbox session 时,我需要这样的东西: firefox -p Profile 1 #Open in workspace 4 firefox -p profile 2 #O
我是一名优秀的程序员,十分优秀!