详情页

php 随机指定文件夹内的一个文件,并返回文件名称

时间:2023年10月04日

编辑:佚名

可以随机获取指定目录下一个文件名的 PHP 函数:
function getRandomFileName($dir) {
  // 获取目录下所有文件
  $files = glob($dir . '/*.*');
  if (empty($files)) {
    return null;
  }
  // 随机选择一个文件
  $file = $files[array_rand($files)];
  // 返回文件名
  return basename($file);
}
该函数接受一个参数 $dir,表示要随机选择文件的目录路径。函数首先使用 glob() 函数来获取指定目录下所有文件的文件路径,然后使用 array_rand() 函数从中随机选择一个文件。最后,函数使用 basename() 函数获取选中文件的文件名,并返回。
如果指定目录下没有文件,则该函数会返回 null。
你可以通过以下方式调用该函数:
$dir = '/path/to/files';
$filename = getRandomFileName($dir);
if ($filename !== null) {
  echo $filename;
} else {
  echo '指定目录下没有文件。';
}
其中,/path/to/files 是要随机选择文件的目录路径。调用函数后,函数会随机选择一个文件并返回其文件名。如果指定目录下没有文件,则函数会返回 null。
二次需求
我想一次性返回多个文件名!
function getRandomFileNames($dir, $num) {
  // 获取目录下所有文件
  $files = glob($dir . '/*.*');
  if (empty($files)) {
    return null;
  }
  $count = count($files);
  // 如果文件数量不足 $num,则直接返回所有文件名
  if ($count <= $num) {
    $fileNames = array_map('basename', $files);
    return $fileNames;
  }
  // 随机选择 $num 个文件
  $randomIndexes = array_rand($files, $num);
  // 获取选中文件的文件名
  $fileNames = array();
  foreach ($randomIndexes as $index) {
    $fileNames[] = basename($files[$index]);
  }
  return $fileNames;
}
该函数接受两个参数,分别是目录路径 $dir 和要获取的文件数量 $num。如果目录下没有任何文件,则返回 null。如果文件数量不足 $num,则直接返回目录下所有文件的文件名。
如果文件数量足够,则从所有文件中随机选择 $num 个文件,然后将选中文件的文件名放入一个数组中返回。
你可以通过以下方式调用该函数:
$dir = '/path/to/directory';
$num = 3;
$fileNames = getRandomFileNames($dir, $num);
print_r($fileNames);
其中,$dir 是目录路径,$num 是要获取的文件数量。函数将返回一个包含随机获取的文件名的数组。
相关文章
猜你需要