

新闻资讯
技术学院本文讲解如何利用 php 的 glob() 函数直接通过索引访问目录列表中的第 n 个文件夹(如“第 40 个文件夹”),无需手动遍历或构建冗余数组,兼
顾性能与简洁性。
在 PHP 中,glob() 函数不仅用于匹配路径,其返回值本身就是索引数组——这意味着你可以像操作普通数组一样,用下标(如 [39])直接获取第 40 个匹配项(注意:数组索引从 0 开始)。这正是解决“跳转到第 N 个文件夹”需求最轻量、高效的方式。
默认情况下,glob("folderlist/*") 会同时匹配文件和子目录。若仅需文件夹,请务必启用 GLOB_ONLYDIR 标志,并配合通配符 *(否则 glob("folderlist/") 不会返回子项):
// ✅ 获取所有子目录,并按字母顺序排序(glob 默认排序)
$folders = glob("folderlist/*", GLOB_ONLYDIR);
// 检查是否存在第 40 个文件夹(即索引 39)
$targetIndex = 39;
if (isset($folders[$targetIndex])) {
$targetPath = $folders[$targetIndex];
echo "第 40 个文件夹路径:{$targetPath}\n";
// 示例:在此目录中写入文件
file_put_contents("{$targetPath}/note.txt", "Hello from folder #40!");
} else {
echo "错误:目录列表中不足 40 个文件夹(共 " . count($folders) . " 个)\n";
}function getFolderByNumber(string $baseDir, int $number): ?string {
$folders = glob("{$baseDir}/*", GLOB_ONLYDIR);
$index = $number - 1; // 转换为 0-based 索引
return $folders[$index] ?? null;
}
// 使用示例
$path = getFolderByNumber("folderlist", 40);
if ($path) {
file_put_contents("{$path}/log.txt", date('c'));
}综上,glob(...)[N] 是精准、简洁、高性能的解决方案——它天然契合“按序号跳转目录”的场景,无需额外数组缓存或复杂逻辑,是 PHP 文件系统操作中的实用技巧。