要用PHP实现递归循环每一个目录,可以遵循以下步骤:
- 使用PHP中的opendir()函数打开目录,并使用readdir()函数读取目录中的文件和文件夹;
- 判断读取的目录项是否为文件夹,如果是文件夹,则使用递归的方式进入该文件夹,继续读取其中的文件和文件夹;
- 如果读取到的是文件,则根据需要进行操作,比如输出文件名等;
- 在每次调用自身完成递归读取后,需要使用closedir()函数关闭当前目录。
以下是一个简单的示例代码,用于递归读取指定目录下的所有文件和文件夹,输出它们的名称:
function list_dir($dir){
if(is_dir($dir)){
if($dh = opendir($dir)){
while(($file = readdir($dh)) !== false){
if($file != '.' && $file != '..'){
if(is_dir($dir.'/'.$file)){
//递归调用自身
list_dir($dir.'/'.$file);
echo '文件夹:'.$file."\n";
}else{
//输出文件名
echo '文件:'.$file."\n";
}
}
}
closedir($dh);
}
}
}
在调用该函数时,只需要传入需要遍历的目录路径,就可以完成递归读取操作,例如:
list_dir('./mydir');
上面的代码将会遍历当前目录下名为“mydir”的文件夹,输出其中的所有文件和文件夹的名称。
另一个示例,下面的代码将递归读取指定目录下的所有HTML文件,并将它们的文件路径添加到一个数组中:
function list_html_files($dir, &$result){
if(is_dir($dir)){
if($dh = opendir($dir)){
while(($file = readdir($dh)) !== false){
if($file != '.' && $file != '..'){
if(is_dir($dir.'/'.$file)){
//递归调用自身
list_html_files($dir.'/'.$file, $result);
}elseif(pathinfo($file, PATHINFO_EXTENSION) == 'html'){
//将HTML文件路径添加到数组
$result[] = $dir.'/'.$file;
}
}
}
closedir($dh);
}
}
}
在调用该函数时,需要传入一个引用类型的数组参数,用于存储读取到的HTML文件路径,例如:
$html_files = array();
list_html_files('./mydir', $html_files);
print_r($html_files);
上面的代码将会遍历当前目录下名为“mydir”的文件夹,将其中所有HTML文件的路径添加到$html_files数组中,并输出该数组中的所有元素。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用PHP实现递归循环每一个目录 - Python技术站