/**
* 获取目录下的文件
* @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)));