Laravel中如何对文件名集合进行自然排序?
问题:Laravel存储读取文件无法按自然字母顺序排序
我在通过Laravel的Storage组件读取public/uploads目录下的文件时,碰到了排序异常的问题:本地文件系统里文件的显示顺序是正确的,但读取得到的文件数组没法按预期的字母顺序排列。由于后续要基于这些文件生成对应的数据表记录,必须保证读取后的顺序准确。
尝试过的无效方法
- 使用Laravel集合的排序方法,没有效果
- 将文件数组转为普通数组后调用
asort()函数,同样无效
获取文件数组的代码如下:
$files = Storage::disk('public')->files("uploads"); dd($files);
解决方案
最终通过PHP原生的sort()函数,并指定SORT_NATURAL排序规则,成功解决了排序问题,代码如下:
$files = Storage::disk('public')->files("uploads"); sort($files, SORT_NATURAL);
排序后的结果完全符合预期。
内容的提问来源于stack exchange,提问作者David Garcia
相关产品推荐
相关产品推荐

