昨天面试的时候遇到了这个题目,没有做出来,因为我不知道用PHP访问文件夹下文件的函数。
思路:要说算法的话,这题其实并不难。获取文件夹下的子文件,如果是文件就输出,如果是文件夹,输出之后继续深入搜索。用个递归就行了。
需要用到的方法:
is_dir($path) 判断是否是一个文件夹
opendir($path)打开文件夹
readdir($dir)依次读取文件夹下的文件
filetype($file)文件的属性,有dir和file两种
function listdirfiles($p){
//先检查$p是不是一个文件夹
if(is_dir($p)){
//依次读取文件夹下的子文件
$dir = opendir($p);
while(($file = readdir($dir))!==false){
//注意file的type,有file和dir两种,而dir要注意,在linux下,.和..也是属于dir的,如果不进行排除,会发生无限次循环的问题。
$type = filetype($p.$file);
if($type=='dir'&&$file!='.'&&$file!='..'){
listdirfiles($p.$file.'/');
}
echo $file.' ';
}
//用完要记得关闭
closedir($dir);
}else{
echo 'The path is not a dir';
}
}