获取目录下的文件@文件排序

 
/**
 * 获取目录下的文件
 * @param $dir
 * @param array|string $isext(*=all)
 * @return array
 */
function getFileList($dir,$isext=array('jpg','jpeg','png','gif','bmp','webp')){
    $dir .= substr($dir, -1) == '/' ? '' : '/';
    $fileInfo = array();
    foreach (glob($dir.'*') as $v) {
        if(is_dir($v)){
            $fileInfo = array_merge($fileInfo,getFileList($v,$isext));
        }else{
            $files['file'] = iconv('gbk','utf-8',$v);//获取文件名称
//   $files['size'] = round((filesize($v)/1024),2);//获取文件大小
            $files['time'] = date("Y-m-d H:i:s",filemtime($v));//获取文件最近修改日期
 
            $ext = pathinfo($v,PATHINFO_EXTENSION);
            if (is_array($isext) && in_array($ext,$isext)){
                $fileInfo[] = $files;
            }elseif ($isext == '*'){
                $fileInfo[] = $files;
            }
        }
    }
    return $fileInfo;
}
 
/**
 * 文件排序(整理)
 * @param $dir
 * @param array $arr
 * @param int $sort
 * @param array|string $isext
 * @return array
 */
function getArrangeFile($dir,$arr=array(),$sort=SORT_DESC,$isext=array()){
    if (empty($dir) && empty($arr)){return array();}
    $arr = !empty($arr) ? $arr : (empty($isext) ? getFileList($dir) :  getFileList($dir,$isext)) ;
    foreach($arr as $k=>$v){
//  $file[$k] = $v['file'];
//  $size[$k] = $v['size'];
        $time[$k] = $v['time'];
    }
    if (!empty($arr)){
        array_multisort($time,$sort,SORT_STRING, $arr);//按时间排序
        //array_multisort($file,$sort,SORT_STRING, $arr);//按名字排序
        //array_multisort($size,$sort,SORT_NUMERIC, $arr);//按大小排序
    }
    return $arr;
}

###php 遍历目录下文件方法

//遍历目录下文件方法
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)));
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值