如何将根目录中的每个文件名和每个子文件夹中的所有文件名放入php中的数组?
答案 0 :(得分:4)
使用scandir(),您将找到子目录的递归函数以及大量其他示例,以实现您的目标。
答案 1 :(得分:2)
我一直首选DirectoryIterator
和RecursiveDirectoryIterator
。
以下是一个例子:
function drawArray(DirectoryIterator $directory)
{
$result=array();
foreach($directory as $object)
{
if($object->isDir()&&!$object->isDot())
{
$result[$object->getFilename()]=drawArray(new DirectoryIterator($object->getPathname()));
}
else if($object->isFile())
{
$result[]=$object->getFilename();
}
}
return $result;
}
$array=drawArray(new DirectoryIterator('/path'));
print_r($array);
答案 2 :(得分:1)
如果您真的想要浏览所有您的文件,请查看glob()
[并对您的RAM表示哀悼]。
答案 3 :(得分:1)
我就是这样做的。
/**
Recursively returns all the items in the given directory alphabetically as keys in an array, optionally in descending order.
If a key has an array value it's a directory and its items are in the array in the same manner.
*/
function scandir_tree($directory_name, $sort_order = SCANDIR_SORT_ASCENDING, $_recursed = false)
{
if (!$_recursed || is_dir($directory_name))
{
$items = array_diff(scandir($directory_name, (int) $sort_order), ['.', '..']);
$tree = [];
foreach ($items as $item)
{
$tree[$item] = scandir_tree($directory_name . $item, $sort_order, true);
}
return $tree;
}
return $directory_name;
}
答案 4 :(得分:1)
试试这个:
$ar=array();
$g=scandir('..');
foreach($g as $x)
{
if(is_dir($x))$ar[$x]=scandir($x);
else $ar[]=$x;
}
print_r($ar);