求一个递归算法(用递归遍历文件夹和N层的子文件夹,将文件名和文件修改时间存入数组返回) 本帖最后由 sibang 于 2010-06-29 17:35:23 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $result_array[$nTim]=$nFle;这个可能会有问题多个文件完全有可能在同一秒内生成 建议以后用上php代码标签,,,,现在比较难分清层次问题不一定在于上面,实在太不好读了,, 我仔细看过,每一个文件的生成时间都不相同,php代码标签我没有用,但是我在editplus内用了tab键的缩进,不过发到这里之后全部被csdn给过滤掉了 看看这样会不会保持代码的原来缩进样式Function Tree($Cur,$Ext){ IF($Cur[strlen($Cur)-1]!="\\"){$Cur.="\\";} Static $result_array=Array(); IF(Is_Dir($Cur)){ $Dir=Dir($Cur); While($file=$Dir->read()){ IF($file=="." Or $file==".." Or In_Array(StrToLower($file),$Ext)){Continue;} IF(Is_Dir($Cur.$file)){ Tree($Cur.$file."\\",$Ext); }Else{ $FileEx=Explode(".",$file);$FileEx=StrToLower(End($FileEx)); IF($FileEx=="html" Or $FileEx=="htm" Or $FileEx=="php" Or $FileEx=="shtml" Or $FileEx=="xml" Or $FileEx=="txt"){ $nFle=Str_iReplace("\\","/",$Cur.$file); $nFle=Str_iReplace("//","/",$nFle); $nTim=FileMTime($nFle); $result_array[$nTim]=$nFle; UnSet($FileEx); }Else{ UnSet($FileEx); Continue; } } } $Dir->close(); } Return $result_array;} 自己解决了已经,拿出来分享给大家Function Tree($dir="../"){ //建立dir对象 $d = dir($dir); While(False !== ($Fle = $d->read())){ //去掉两个默认的目录 IF($Fle=='..' Or $Fle=='.'){Continue;} //页面是utf-8的所以需要将文件名进行转码 Echo iconv('gb2312','utf-8',$Fle)."<br>"; //输出当前目录/文件 $curPath=$d->path.'/'.$Fle; //如果是目录则遍历这个目录 IF(Is_dir(RealPath($curPath))){ Tree($curPath);//调用函数本身 } } $d->close();}Tree(); linux下php扩展 求助打印日期段 ecshop 中如何计算数组的长度 PHPMailer无法验证邮件服务器通过 如何在两个PHP文档中传递值 php php多线程求答疑 js的Ajax方法的返回值为什么在IE下正常,而在FF和chrome下却返回空值? 关于php调Webservice的问题 PHP 2019 趋势如何? 请问gmail的api? PHP发的邮件接到后是乱码
我仔细看过,每一个文件的生成时间都不相同,php代码标签我没有用,但是我在editplus内用了tab键的缩进,不过发到这里之后全部被csdn给过滤掉了
Function Tree($Cur,$Ext){
IF($Cur[strlen($Cur)-1]!="\\"){$Cur.="\\";}
Static $result_array=Array();
IF(Is_Dir($Cur)){
$Dir=Dir($Cur);
While($file=$Dir->read()){
IF($file=="." Or $file==".." Or In_Array(StrToLower($file),$Ext)){Continue;}
IF(Is_Dir($Cur.$file)){
Tree($Cur.$file."\\",$Ext);
}Else{
$FileEx=Explode(".",$file);$FileEx=StrToLower(End($FileEx));
IF($FileEx=="html" Or $FileEx=="htm" Or $FileEx=="php" Or $FileEx=="shtml" Or $FileEx=="xml" Or $FileEx=="txt"){
$nFle=Str_iReplace("\\","/",$Cur.$file);
$nFle=Str_iReplace("//","/",$nFle);
$nTim=FileMTime($nFle);
$result_array[$nTim]=$nFle;
UnSet($FileEx);
}Else{
UnSet($FileEx);
Continue;
}
}
}
$Dir->close();
}
Return $result_array;
}
//建立dir对象
$d = dir($dir);
While(False !== ($Fle = $d->read())){
//去掉两个默认的目录
IF($Fle=='..' Or $Fle=='.'){Continue;} //页面是utf-8的所以需要将文件名进行转码
Echo iconv('gb2312','utf-8',$Fle)."<br>";
//输出当前目录/文件
$curPath=$d->path.'/'.$Fle;
//如果是目录则遍历这个目录
IF(Is_dir(RealPath($curPath))){
Tree($curPath);//调用函数本身
}
}
$d->close();
}
Tree();