【问题标题】:What order does php's glob function return pathnames in?php 的 glob 函数以什么顺序返回路径名?
【发布时间】:2014-07-10 09:41:35
【问题描述】:

用于 glob 的 documentation 没有提及它返回路径名数组的顺序(如果有),但是,它确实提到了一个允许您禁用排序的标志。

GLOB_NOSORT - 返回出现在目录中的文件(无 排序)

不使用GLOB_NOSORT标志时,数组如何按glob排序?

【问题讨论】:

    标签: php


    【解决方案1】:

    默认情况下,列表按降序排列ASCIIbethical,即A、B、C...Z、a、b、c...z、0,1...9时间>。它是 libc glob() 的副本

    来源http://www.delorie.com/djgpp/doc/libc/libc_426.html

    还有 glob 的 PHP 源 C 代码:https://github.com/php/php-src/blob/89a9acea1f9d821a9805b3857bf4febbba08690d/win32/glob.c#L521

    【讨论】:

    • 谢谢,不想依赖测试。我一直在寻找关于 libc 中字母排序的注释。
    • np,昨晚你在stackoverflow.com/questions/24665648/… 上问我之后,我做了一些研究,应该注意文档中的排序顺序,以便澄清。
    • 我已请求对文档进行编辑,GLOB_NOSORT - 返回出现在目录中的文件(不排序),默认情况下,列表按字母顺序排序。
    • 根据答案中指出的来源,顺序其实是ASCIIbethical升序。从劳伦斯链接指向的行旁边的qrsort 调用中可以明显看出这一点。它使用基于strcmp 的比较器函数,它只是比较字符代码。操作系统之间在特定于区域设置的字符的顺序上可能存在细微差别(取决于操作系统使用的编码),但标准英语子集按 ASCII 顺序排序(例如,大写字母在小写字母之前)。跨度>
    • 这个答案是错误的。正如 ksadowski 所说,排序是 ASCIIbethical 和升序的,如下所示:A、B、C...Z、a、b、c...z
    【解决方案2】:

    值得注意的是,根据我的经验,我得到的文件是这样排序的

    Alpha.txt
    Beta.txt
    Zebra.txt
    alpha.txt
    beta.txt
    zebra.txt
    

    这是在linux上

    最好有

    Alpha.txt
    alpha.txt
    Beta.txt
    beta.txt
    Zebra.txt
    zebra.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多