php 获取服务器文件夹中所有子目录以及文件并将所有的文件目录放进数组中
时间: 2023-05-18 10:05:54 浏览: 93
可以使用 PHP 的 scandir 函数来获取指定目录下的所有文件和子目录,然后使用递归函数将所有的文件和子目录添加到一个数组中。以下是示例代码:
```
function getDirContents($dir, &$results = array()) {
$files = scandir($dir);
foreach ($files as $key => $value) {
$path = realpath($dir . DIRECTORY_SEPARATOR . $value);
if (!is_dir($path)) {
$results[] = $path;
} else if ($value != "." && $value != "..") {
getDirContents($path, $results);
$results[] = $path;
}
}
return $results;
}
$dir = "/path/to/directory";
$contents = array();
getDirContents($dir, $contents);
print_r($contents);
```
这段代码将会输出指定目录下的所有文件和子目录,并将它们放进一个数组中。
相关问题
php中的递归查找文件夹,php递归获取目录内的文件,包含子目录
在 PHP 中,可以使用递归函数来查找文件夹并获取其内部的文件,包括其所有子目录中的文件。下面是一个示例代码:
```php
function scan_dir($dir) {
$files = array();
if (is_dir($dir)) {
$handle = opendir($dir);
while (($file = readdir($handle)) !== false) {
if ($file != "." && $file != "..") {
if (is_dir($dir . "/" . $file)) {
$files = array_merge($files, scan_dir($dir . "/" . $file));
} else {
array_push($files, $dir . "/" . $file);
}
}
}
closedir($handle);
}
return $files;
}
// 使用示例
$dir = "/path/to/dir"; // 指定目录路径
$files = scan_dir($dir); // 获取目录下所有文件
foreach ($files as $file) {
// 处理每个文件
echo $file . "\n";
}
```
上面的代码中,我们定义了一个名为 scan_dir 的递归函数,该函数接受一个目录路径作为参数,并返回一个包含该目录及其所有子目录中所有文件的数组。在函数中,我们使用 opendir 函数打开目录,然后使用 readdir 函数遍历目录中的所有文件。对于每个文件,我们判断它是文件夹还是文件,如果是文件夹,则递归调用 scan_dir 函数来获取其内部的文件,否则将该文件路径添加到结果数组中。最后,我们使用 closedir 函数关闭目录,并返回结果数组。
需要注意的是,由于递归函数会遍历所有子目录中的文件,因此在处理大型目录时可能会消耗大量的时间和内存。如果需要处理大型目录,建议使用迭代函数来遍历目录,并在处理每个文件时进行必要的操作。
php 遍历目录及子目录下所有文件并显示文件全路径
可以使用递归函数来实现遍历目录及其子目录下的所有文件,并显示文件的全路径。可以参考以下代码:
```php
function listFiles($dir) {
if(is_dir($dir)) {
$files = scandir($dir);
foreach($files as $file) {
if($file != "." && $file != "..") {
if(is_dir($dir.'/'.$file)) {
listFiles($dir.'/'.$file);
} else {
echo $dir.'/'.$file."\n";
}
}
}
}
}
// 调用函数
listFiles('/path/to/directory');
```
这个函数接受一个参数 `$dir` 表示要遍历的目录路径。首先判断 `$dir` 是否为一个目录,如果是,则使用 `scandir()` 函数获取目录下的所有文件和子目录。然后遍历这些文件和子目录,如果是子目录,则递归调用 `listFiles()` 函数,否则就直接输出文件的全路径。注意,在遍历时排除 `.` 和 `..` 这两个特殊目录。
阅读全文