我正在使用此功能列出文件夹及其子文件夹中的所有文件
function printAll($dirName){
$dirs=array($dirName);
$files=array();
while($dir=array_pop($dirs)){
$handle=opendir($dir);
while($file=readdir($handle)){
if($file!='.' && $file!='..'){
$dest=$dir.'/'.$file;
if(is_file($dest)){
$files[]=$file;
echo $file;
}else{
$dirs[]=$dest;
}
}
}//end of 1st while
}//end of 2nd while
return $files;
}//end of function
printAll(getcwd());
但有没有办法按字母顺序排序文件名列表?
答案 0 :(得分:0)
你最好使用scandir来做这种事情。由于您要求的稍微奇怪的事情,它的内置排序将无法完成工作(由于抓取下面目录中的文件),但PHP的内置数组排序(在这种情况下,natsort)应该完成工作细
function getDir($folder){
$folderFiles = scandir($folder);
$files = Array();
foreach($folderFiles as $filename){
if($filename==="." || $filename==="..") continue;
if(is_dir($folder."/".$filename)){
$files = array_merge($files, getDir($folder."/".$filename));
}else{
$files[] = $filename;
}
}
return $files;
}
$files = getDir("./");
natsort($files);
$files = array_values($files);
echo "<pre>";
print_r($files);
echo "</pre>";
答案 1 :(得分:0)
您可以使用php的sort方法执行排序。
首先,不要回显第11行的文件名。
//echo $file;
接下来使用此代码段:
$files_list = printAll(getcwd());
sort($files_list);
print_r( $files_list );