我正在开发一个管理面板,显示服务器上特定位置的目录结构。我有一个递归的php函数,它遍历所有文件和文件夹。我想不通的是如何将这个目录结构存储在这样的php关联数组中:
array[foldername1][0]=file; // if the foldername1 contains a file
array[foldername1][foldername2][0]=file //if foldername1 contains another folder(foldername2) along with the file.
我要遵循的规则是:文件夹应该始终是键,文件应该始终位于这样的索引处:
array[folder1][folder2][0]=file1;
array[folder1][folder2][1]=file2;
填充这个关联数组的函数应该是泛型的,因为我们永远不知道目录结构可以是什么。我希望json_将这个数组编码回我的客户机,并用javascript处理它,这在目前不是问题。
如果这是一个坏的方法,请让我知道考兹可能有更好的方法来做这件事。我想用平面阵列,但我想这是个糟糕的设计。
最佳答案
$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__), RecursiveIteratorIterator::CHILD_FIRST);
$r = array();
foreach ($ritit as $splFileInfo) {
$path = $splFileInfo->isDir()
? array($splFileInfo->getFilename() => array())
: array($splFileInfo->getFilename());
for ($depth = $ritit->getDepth() - 1; $depth >= 0; $depth--) {
$path = array($ritit->getSubIterator($depth)->current()->getFilename() => $path);
}
$r = array_merge_recursive($r, $path);
}
print_r($r);