• 注册
  • 代码教程 代码教程 关注:6 内容:36

    php 遍历目录下文件并且按修改时间排序,并根据文件修改日期对目录下的文件排序

  • 查看作者
  • 打赏作者
  • 9 渡劫 后期
    //遍历目录下文件方法
    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);
            }
            
            }
        }
        
        
        
    }

    请登录之后再进行评论

    登录
  • 任务
  • 偏好设置
  • 到底部
  • 帖子间隔 侧栏位置: