方法一:
可以使用递归函数来获取所有子目录下的文件列表,以下是一个示例代码:
<?php
function getFiles($dir) {
$files = [];
if (is_dir($dir)) {
$handle = opendir($dir);
while (($file = readdir($handle)) !== false) {
if ($file != '.' && $file != '..') {
$path = $dir . '/' . $file;
if (is_dir($path)) {
$files = array_merge($files, getFiles($path));
} else {
$files[] = $path;
}
}
}
closedir($handle);
}
return $files;
}
$directory = 'path/to/directory';
$fileList = getFiles($directory);
foreach ($fileList as $file) {
echo $file . "\n";
}
?>
请将path/to/directory
替换为您要获取文件列表的目录路径。该函数会递归遍历子目录,并返回所有文件的路径列表。然后,您可以使用foreach循环来遍历文件列表并输出文件路径。
方法二:
/**
* 获取文件列表(所有子目录文件)
*
* @param string $path 目录
* @param array $file_list 存放所有子文件的数组
* @param array $ignore_dir 需要忽略的目录或文件
* @return array 数据格式的返回结果
*/
function read_file_list($path, &$file_list, $ignore_dir = [])
{
$path = rtrim($path, '/');
if (is_dir($path)) {
$handle = @opendir($path);
if ($handle) {
while (false !== ($dir = readdir($handle))) {
if ($dir != '.' && $dir != '..') {
if (!in_array($dir, $ignore_dir)) {
if (is_file($path . '/' . $dir)) {
$file_list[] = $path . '/' . $dir;
} elseif (is_dir($path . '/' . $dir)) {
read_file_list($path . '/' . $dir, $file_list, $ignore_dir);
}
}
}
}
@closedir($handle);
} else {
return false;
}
} else {
return false;
}
}