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

Laravel如何从文件夹仅获取文件名数组而非含路径的数组?

如何在Laravel中仅获取文件名数组(而非带路径的)

嘿,这个问题很常见!你不用手动写foreach循环逐个提取,Laravel的Filesystem组件已经给我们提供了更简洁的方式——因为File::allFiles()返回的其实是**SplFileInfo对象数组**,每个对象都自带获取文件名的方法。

这里有两种简洁的实现方式:

方式一:使用Laravel集合处理(推荐)

利用集合的map方法快速转换,最后转成数组:

$fileNames = collect(File::allFiles('myfolder/'))
    ->map(fn($file) => $file->getFilename())
    ->toArray();

集合的链式调用可读性很高,而且如果后续还要对文件名做过滤、排序等操作,直接追加方法就行,非常灵活。

方式二:使用array_map函数

如果你更习惯原生PHP函数,也可以用array_map来处理:

$fileNames = array_map(function($file) {
    return $file->getFilename();
}, File::allFiles('myfolder/'));

// 或者用PHP 7.4+的箭头函数更简洁:
$fileNames = array_map(fn($file) => $file->getFilename(), File::allFiles('myfolder/'));

补充说明:

  • 如果你只需要当前目录下的文件(不递归子目录),可以把allFiles()换成files(),处理逻辑是一样的。
  • getFilename()方法会直接返回不带路径的纯文件名(包括扩展名),比手动用basename()处理路径字符串更可靠,因为SplFileInfo已经帮我们封装了文件系统的细节。

内容的提问来源于stack exchange,提问作者user779681

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:48:39