PHP scandir 结果:按文件夹文件排序,然后按字母顺序排序
scandir 的 PHP 手册:默认情况下,排序顺序是按字母顺序排列的升序。
我正在构建一个文件浏览器(在 Windows 中),因此我希望返回的地址按文件夹/文件排序,然后在这些子集中按字母顺序排列。
示例:现在,我扫描并输出
Aardvark.txt
BarDir
BazDir
Dante.pdf
FooDir
,我想要
BarDir
BazDir
FooDir
Aardvark.txt
Dante.pdf
除了 usort
和 is_dir()
解决方案(我可以自己弄清楚) ,有没有一种快速有效的方法来做到这一点?
写此评论的忍者走在正确的道路上 - 是那是最好的方法吗?
PHP manual for scandir: By default, the sorted order is alphabetical in ascending order.
I'm building a file browser (in Windows), so I want the addresses to be returned sorted by folder/file, then alphabetically in those subsets.
Example: Right now, I scan and output
Aardvark.txt
BarDir
BazDir
Dante.pdf
FooDir
and I want
BarDir
BazDir
FooDir
Aardvark.txt
Dante.pdf
Other than a usort
and is_dir()
solution (which I can figure out myself), is there a quick and efficient way to do this?
The ninja who wrote this comment is on the right track - is that the best way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这能给你你想要的吗?
请注意,您无法对文件使用
glob('*.*')
,因为它会选取名为like.this
的文件夹。Does this give you what you want?
Note that you can't
glob('*.*')
for files because it picks up folders namedlike.this
.请尝试这个。一个简单的函数,用于按文件和文件夹(目录)对 PHP scandir 结果进行排序:
Please try this. A simple function to sort the PHP scandir results by files and folders (directories):
我迟到了,但我喜欢使用
readdir()
而不是使用glob()
提供我的解决方案。我从解决方案中缺少的是您的解决方案的递归版本。但使用 readdir 比使用 glob 更快。因此,对于 glob 来说,它看起来像这样:
这一个与 readdir 一起使用,但具有基本相同的输出:
我希望有人可能会发现这很有用。
I'm late to the party but I like to offer my solution with
readdir()
rather than withglob()
. What I was missing from the solution is a recursive version of your solution. But with readdir it's faster than with glob.So with glob it would look like this:
And this one is with readdir but has basically the same output:
I hope someone might find this useful.