繁体   English   中英

使用PHP依次列出所有文件和文件夹

[英]List all files and folders in order using PHP

我的代码:

<?php

$dirs = array_filter(glob('*'), 'is_dir');
$files = array_filter(glob('*'), 'is_file');
$all = $dirs + $files;

foreach ($all as $value){
    echo '<li><a href="'.$value.'">'.$value.'</a></li>'; 
}
?>

这将返回所有文件和文件夹,但以随机顺序:

Array
(
    [2] => New folder
    [6] => dir
    [7] => dir1
    [8] => dir2
    [9] => dir3
    [0] => A_test.txt
    [1] => Index.php
    [3] => app.exe
    [4] => b_test
    [5] => delete.php
    [10] => hello.png
    [11] => z_test.txt
)

sort()不起作用。 我想按默认顺序对它们进行排序。

就像提到的Half Crazed一样,在回显它们之前,您只是缺少文件的sort()。

<?php

$dirs = array_filter(glob('*'), 'is_dir');
$files = array_filter(glob('*'), 'is_file');
$all = $dirs + $files;

sort($all); //sort them

foreach ($all as $value){
    echo '<li><a href="'.$value.'">'.$value.'</a></li>'; 
}

?>

它们并不是随机排列的。 glob的默认行为是对它返回的名称进行排序。 如果您希望对它们进行排序,则实际上必须使用GLOB_NOSORT标志来覆盖它。 它们看起来是随机的,因为排序区分大小写,并且大写名称出现在顶部。 如果natcasesort区分大小写地对其进行排序,请在组合它们之前在两个数组上使用natcasesort

$dirs = array_filter(glob('*'), 'is_dir');
natcasesort($dirs);
$files = array_filter(glob('*'), 'is_file');
natcasesort($files);
$all = $dirs + $files;

foreach ($all as $value){
    echo '<li><a href="'.$value.'">'.$value.'</a></li>';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM