ルートディレクトリのすべてのファイル名と、各サブフォルダーのすべてのファイル名をphpの配列に入れるにはどうすればよいですか?
7040 次
5 に答える
4
scandir()を使用すると、サブディレクトリの再帰関数や、必要なものを実現するための他の多くの例が見つかります。
于 2012-09-09T15:29:38.873 に答える
3
私はいつもとを好ん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);
于 2012-09-09T15:39:48.293 に答える
1
[実際にすべてglob()
のファイルをスキミングしたい場合は、RAM に哀悼の意を表します] をご覧ください。
于 2012-09-09T15:23:42.957 に答える
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;
}
于 2012-09-09T15:30:23.037 に答える
1
これを試して:
$ar=array();
$g=scandir('..');
foreach($g as $x)
{
if(is_dir($x))$ar[$x]=scandir($x);
else $ar[]=$x;
}
print_r($ar);
于 2012-09-09T15:35:05.530 に答える