我正在阅读一个包含一些图片的目录,使用readdir()的一个非常简单的实现,如下所示:
if ($handle = opendir($path)) {
while (false !== ($szFilename = readdir($handle))) {
if ($szFilename[0] !== '.') {
if (is_file($path.$szFilename)) {
// do stuff
}
}
}
}
我遇到的问题是文件没有按字母顺序读取,就像readdir()状态的文档一样:
返回目录中下一个文件的文件名。文件名按照文件系统存储它们的顺序返回。
另一件奇怪的事情是,在本地测试服务器上,相同的代码运行得很好。在这两种情况下,它都运行在使用LAMP堆栈的服务器上。
我知道我可以构建一个数组并对其进行排序,但我想知道我所做的事情是否遗漏了什么。
发布于 2009-02-12 14:38:30
按字母顺序::我想你读错了你引用的片段...
返回目录中下一个文件的文件名。文件名按照文件系统存储它们的顺序返回。
'ls‘会(通常)按字母顺序显示文件,但这并不意味着它们在文件系统中就是这样存储的。我担心PHP是按照规范来运行的。
如果必须按字母顺序排序,则可以考虑使用scandir作为工作的基础。:)
发布于 2009-02-13 05:45:08
您可以将所有文件名复制到一个数组中,然后使用
<?php
sort($filesArray);
?>
发布于 2009-02-12 14:36:56
我想这里的文档已经很清楚了。
它们在文件系统中存储的
顺序
与字母顺序不同
https://stackoverflow.com/questions/541510
复制相似问题