思路:首先获取一个目录下所有文件名可以使用 scandir() 函数。scandir() 函数返回指定目录中的文件和目录的数组。因为这个返回的数据不包含子目录下文件,所以可以使用递归来处理。
* @param $dir 要查找的文件路径
* @param $dir_array 存储文件名的数组
function
find_files(
$dir
, &
$dir_array
)
//
读取当前目录下的所有文件和目录(不包含子目录下文件)
$files
=
scandir
(
$dir
);
if
(
is_array
(
$files
)) {
foreach
(
$files
as
$val
) {
//
跳过. 和 ..
if
(
$val
== '.' ||
$val
== '..'
)
continue
;
//
判断是否是目录
if
(
is_dir
(
$dir
. '/' .
$val
)) {
//
将当前目录添加进数组
$dir_array
[
$dir
][] =
$val
;
//
递归继续往下寻找
find_files(
$dir
. '/' .
$val
,
$dir_array
);
}
else
{
//
不是目录也需要将当前文件添加进数组
$dir_array
[
$dir
][] =
$val
;
//
调用
$folder_list
=
array
();
find_files(
'/demo/',
$folder_list
);
var_dump
(
$folder_list
);