Jan
01
2024
php循环获取目录以及所有子目录中的所有文件
作者:
绝缘体.. 发布:
2024-01-01 12:16 分类:
未分类 阅读:
抢沙发
1. php 循环获取目录以及所有子目录中的所有文件,结果是一个多维数组。
/**
* 循环获取目录以及所有子目录中的所有文件,结果是一个多维数组
* @param string $dir
* @return array
* @author www.phpernote.com
*/
function listDir($dir) {
$files = [];
if (!is_dir($dir)) {
return $files;
}
foreach (scandir($dir) as &$file_name) {
if ($file_name == '.' || $file_name == '..') {
continue;
}
$file_abs_path = $dir . DIRECTORY_SEPARATOR . $file_name;
$files[$file_name] = [
'file_name' => $file_name,
'abs_path' => $dir,//绝对地址
'is_dir' => is_dir($file_abs_path) ? 1 : 0,
'ext' => pathinfo($file_abs_path, PATHINFO_EXTENSION)
];
$files[$file_name]['is_dir'] && $files[$file_name]['son'] = listDir($file_abs_path);
}
return $files;
}
返回结果示例:
Array
(
[1] => Array
(
[file_name] => 1
[abs_path] => /var/www/test
[is_dir] => 1
[son] => Array
(
[2] => Array
(
[file_name] => 2
[abs_path] => /var/www/test/1
[is_dir] => 1
[son] => Array
(
[3.log] => Array
(
[file_name] => 3.log
[abs_path] => /var/www/test/1/2
[is_dir] => 0
[file_ext] => log
)
)
)
[2.log] => Array
(
[file_name] => 2.log
[abs_path] => /var/www/test/1
[is_dir] => 0
[file_ext] => log
)
)
)
[test.txt] => Array
(
[file_name] => test.txt
[abs_path] => /var/www/test
[is_dir] => 0
[file_ext] => txt
)
)
2. php 循环获取目录以及所有子目录中的所有文件,结果是一个二维数组。
/**
* 循环获取目录以及所有子目录中的所有文件,结果是一个二维数组
* @param string $dir
* @return array
* @author www.phpernote.com
*/
function listDir($dir) {
static $files = [];
if (!is_dir($dir)) {
return $files;
}
foreach (scandir($dir) as &$file_name) {
if ($file_name == '.' || $file_name == '..') {
continue;
}
$file_abs_path = $dir . $file_name;//绝对地址
$is_dir = is_dir($file_abs_path);
$files[$file_abs_path] = [
'file_name' => $file_name,
'abs_path' => $dir,
'is_dir' => $is_dir ? 1 : 0,
'ext' => $is_dir ? '' : pathinfo($file_abs_path, PATHINFO_EXTENSION)
];
$is_dir && listDir($file_abs_path);
}
return $files;
}
返回结果示例:
Array
(
[1] => Array
(
[file_name] => 1
[abs_path] => /var/www/test
[is_dir] => 1
)
[2] => Array
(
[file_name] => 2
[abs_path] => /var/www/test/1
[is_dir] => 1
)
[3.log] => Array
(
[file_name] => 3.log
[abs_path] => /var/www/test/1/2
[is_dir] => 0
[file_ext] => log
)
[test.txt] => Array
(
[file_name] => test.txt
[abs_path] => /var/www/test
[is_dir] => 0
[file_ext] => txt
)
)
微信扫一扫,打赏作者吧~