You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用glob获取目录文件夹后如何按名称数值顺序排序

解决方案

你遇到的是字典序排序和数值自然排序的差异问题:glob()默认返回的目录列表按照字符串字典规则排序,会出现1、10、11…2、20这类不符合数值顺序的结果,使用PHP内置的自然排序函数natsort()即可解决,同时你原有代码存在多余的</a>闭合标签错误,也同步修正:

// 先获取所有目标目录存入数组
$dirs = glob('C:\xampp\htdocs\myweb\central/folders/*', GLOB_ONLYDIR);
// 对数组进行自然排序,按名称中的数值大小排列
natsort($dirs);

// 遍历排序后的数组输出按钮
foreach($dirs as $dir) {
    $dir = basename($dir);
    $button = "<button class='items'>$dir</button>";
    echo $button;
}

如果需要按数值从大到小倒序排列,在natsort($dirs);后加一行$dirs = array_reverse($dirs);即可。

如果你的文件夹名称是纯数字格式,也可以使用自定义数值排序实现更严格的匹配,替换上述natsort($dirs);行即可:

usort($dirs, function($a, $b) {
    return intval(basename($a)) - intval(basename($b));
});

内容的提问来源于stack exchange,提问作者Bob D. Builder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:54:04