PHP scandir结果:按文件夹文件排序,然后按字母顺序排序

Ben*_*Ben 4 php sorting scandir

用于scandir的 PHP手册:默认情况下,排序顺序按字母顺序升序排列.

我正在构建一个文件浏览器(在Windows中),所以我希望按文件夹/文件排序返回地址,然后按字母顺序返回这些子集.

示例:现在,我扫描并输出

Aardvark.txt
BarDir
BazDir
Dante.pdf
FooDir
Run Code Online (Sandbox Code Playgroud)

而且我要

BarDir
BazDir
FooDir
Aardvark.txt
Dante.pdf
Run Code Online (Sandbox Code Playgroud)

除了usortis_dir()解决方案(我可以自己弄清楚)之外,还有一种快速有效的方法吗?

撰写此评论的忍者走在正确的轨道上 - 这是最好的方式吗?

ale*_*lex 5

这会给你你想要的吗?

function readDir($path) {

    // Make sure we have a trailing slash and asterix
    $path = rtrim($path, '/') . '/*';

    $dirs = glob($path, GLOB_ONLYDIR);

    $files = glob($path);

    return array_unique(array_merge($dirs, $files));

}

$path = '/path/to/dir/';

readDir($path);
Run Code Online (Sandbox Code Playgroud)

请注意,您无法访问glob('*.*')文件,因为它会选择名为的文件夹like.this.

  • @Steve我认为你的意思是全球.Blob什么都不做.(虽然它应该.) (2认同)