php - 使用 glob(..., GLOB_BRACE) 按文件名排序
问题描述
假设我在当前文件夹中有这些文件:
a.txt
b.txtbis
c.txt
+ other files with other extensions
我想用 PHP 在一个列表中列出.txt
和文件,并且我希望结果按文件名排序。很遗憾:.txtbis
glob
glob("*.{txtbis,txt}", GLOB_BRACE)
给Array ( [0] => b.txtbis [1] => a.txt [2] => c.txt )
glob("*.{txt,txtbis}", GLOB_BRACE)
给Array ( [0] => a.txt [1] => c.txt [2] => b.txtbis )
它们都没有按应有的方式排序。
在中使用大括号时如何按文件名排序列表glob
?
解决方案
Glob 按完整路径名(路径 + 名称 + 扩展名)按字母顺序对文件进行排序。如果只想按(基)名称排序,可以使用 usort:
$files = glob("*.{txtbis,txt}", GLOB_BRACE);
usort(
$files,
function($a,$b){
return basename($a) <=> basename($b);
}
);
var_dump($files);
推荐阅读
- java - 如何在场景中为 FXML 中定义的对象设置 KeyEvent?
- json - ElasticSearch JSON 预期
- bash - “运行当前块”不适用于 bash(在 Windows 10 上)
- python - Converting a graph into dictionary form
- javascript - 如果语言不是波斯语,则会收到错误消息
- scala - 如何将 SortedSet 迁移到 Seq 或 Array 以使用 Spark 的 Dataset API 和 Encoders?
- r - 基于用户输入的 R 闪亮子集,然后基于子集的代码
- svg - Vue PWA 模板,使用 SVG 精灵
- python - 连续行满足多个条件时的文件解析
- php - PHP 肥皂网址 - 空白内容