似乎在php中,不同的目录扫描函数以不同的顺序返回结果。
问题:
要比较的功能:
scandir($dir)
按字母顺序返回结果。不是很有趣。glob($dir . '/*')
按字母顺序返回结果。不是很有趣。scandir($dir, SCANDIR_SORT_NONE)
返回结果“未排序”,says the manual opendir($dir)
+ readdir($handle)
按照文件系统存储顺序返回结果。“,says the manual。glob($dir . '/*', GLOB_NOSORT)
返回结果“显示在目录中(无排序)”,says the manual。DirectoryIterator
的排序。实验表明readdir()和scandir(,SCANDIR_SORT_NONE)产生相同的顺序。我怀疑DirectoryIterator
也是这样。
但是glob(,GLOB_NOSORT)并没有发挥作用。它产生的排序与其他函数不同。
手册中的短语“存储顺序”可以理解为最后修改日期,但这不过是猜测。
背景:
我正在尝试通过使用过滤的glob()来优化当前使用readdir()的现有函数。带有过滤器模式的glob()比首先用readdir()读取结果然后用例如的preg_match()。
该软件由很多人使用/共享,因此我不想通过更改文件的顺序来让任何人感到惊讶。
我认为这并不重要,因为订单不应该被依赖。但我仍然想了解为什么函数表现不同。