Jen*_*ell 13 php directory foreach glob
我有这个工作函数,找到文件夹并创建一个数组.
function dua_get_files($path)
{
foreach (glob($path . "/*", GLOB_ONLYDIR) as $filename)
{
$dir_paths[] = $filename;
}
return $dir_paths;
}
Run Code Online (Sandbox Code Playgroud)
此功能只能查找当前位置的目录.我想在子文件夹及其子文件夹中找到目录路径,依此类推.
该数组仍应是目录路径的平面列表.
输出数组应如何显示的示例
$dir_path[0] = 'path/folder1';
$dir_path[1] = 'path/folder1/child_folder1';
$dir_path[2] = 'path/folder1/child_folder2';
$dir_path[3] = 'path/folder2';
$dir_path[4] = 'path/folder2/child_folder1';
$dir_path[5] = 'path/folder2/child_folder2';
$dir_path[6] = 'path/folder2/child_folder3';
Run Code Online (Sandbox Code Playgroud)
Pas*_*TIN 18
如果你想以递归方式处理目录,你应该看一下RecursiveDirectoryIterator.
$path = realpath('/etc');
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $name => $object){
echo "$name\n";
}
Run Code Online (Sandbox Code Playgroud)
非常奇怪-每个人都建议递归,但最好还是循环一下:
$dir ='/dir';
while($dirs = glob($dir . '/*', GLOB_ONLYDIR)) {
$dir .= '/*';
if(!$result) {
$result = $dirs;
} else {
$result = array_merge($result, $dirs);
}
}
Run Code Online (Sandbox Code Playgroud)
试试这个:
function dua_get_files($path)
{
$data = array();
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach ($files as $file)
{
if (is_dir($file) === true)
{
$data[] = strval($file);
}
}
return $data;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19673 次 |
| 最近记录: |