//遍历目录下文件方法 function printdir($dir) { $files = array(); //opendir() 打开目录句柄 if($handle = @opendir($dir)){ //readdir()从目录句柄中(resource,之前由opendir()打开)读取条目, // 如果没有则返回false while(($file = readdir($handle)) !== false){//读取条目 if( $file != ".." && $file != "."){//排除根目录 if(is_dir($dir . "/" . $file)) {//如果file 是目录,则递归 $files[$file] = printdir($dir . "/" . $file); } else { //获取文件修改日期 $filetime = date('Y-m-d H:i:s', filemtime($dir . "/" . $file)); //文件修改时间作为健值 $files[$filetime] = $file; } } } @closedir($handle); return $files; } }
//根据修改时间对数组排序 function arraysort($aa) { if( is_array($aa)){ ksort($aa); foreach($aa as $key => $value) { if (is_array($value)) { $arr[$key] = arraysort($value); } else { $arr[$key] = $value; } } return $arr; } else { return $aa; } } $dir = "/php"; //输出 /php 下所有文件 print_r(arraysort(printdir($dir)));
//根据文件修改日期对目录下的文件排序 function lt_2222_file_path_list($path){ $new_file_array=arraysort(printdir($path)); //遍历目录下的文件 且 根据修改时间对数组排序 krsort($new_file_array); foreach($new_file_array as $key => $value){ if (!empty($value)) { $for_path_url=$path.'/'.$key; //当前循环的目录地址 if(is_dir($for_path_url)){ //如果是目录则执行 //if($v=='.' || $v=='..'){continue;} //判断是否为系统隐藏的文件.和.. 如果是则跳过否则就继续往下走,防止无限循环再这里。 if((strcasecmp($for_path_url, $path.'/publish') != 0)){ //判断两个字符串是否相等,不显示目录[publish],因为目录下只有文件夹,会输出空列表,只输出[publish]下的目录文件 echo '<br>目录:'.$for_path_url.'<hr>'; } krsort($value); foreach($value as $key2 => $value2){ if($key2!='words' && $key2!='post' && $key2!='file' && $key2!='thumbnail'){ //去除目录下没有文件的目录 echo '<br>文件:'.$key2.'------>'.$value2.'<hr>'; } } lt_2222_file_path_list($for_path_url); } } } }