我正在使用 PHP 脚本从目录中选择有限数量(15)个随机文件,然后将它们显示在页面上。主要问题是它似乎是随机中火。每隔几次我加载页面,它就会显示比预期更多的文件。不是致命错误,但有问题。
另外,我还没有找到一种方法让它不重复相同的文件。依靠这样一个事实,我最终将有数百个文件可供选择......
有什么想法吗?我不是一个真正的程序员...
这是我的脚本:
<?php
$folder = ($_SERVER['DOCUMENT_ROOT'] . "/rotators/index/");
$exts = 'php';
$files = array(); $i = -1;
if ('' == $folder) $folder = './';
$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) {
if (preg_match('/\.'.$ext.'$/i', $file, $test)) {
$files[] = $file;
++$i;
}
}
}
shuffle($files);
$random_keys=array_rand($files,15);
require $files[$random_keys[0]];
require $files[$random_keys[1]];
require $files[$random_keys[2]];
require $files[$random_keys[3]];
require $files[$random_keys[4]];
require $files[$random_keys[5]];
require $files[$random_keys[6]];
require $files[$random_keys[7]];
require $files[$random_keys[8]];
require $files[$random_keys[9]];
require $files[$random_keys[10]];
require $files[$random_keys[11]];
require $files[$random_keys[12]];
require $files[$random_keys[13]];
require $files[$random_keys[14]];
?>
我更新了逻辑,还添加了一些条件,以便代码可以轻松调试。
还有一件事,您已将限制固定为 15 个,如果文件少于 15 个怎么办?如果您确定文件夹内至少有 15 个文件,请保留此文件夹。
现在,每次用户刷新页面时,此代码都会加载 15 个不同的文件。
<?php
$folder = ($_SERVER['DOCUMENT_ROOT'] . "/rotators/index/");
$exts = 'php';
$files = array();
if (is_dir($folder)) {
$handle = opendir($folder);
if ($handle) {
$exts = explode(' ', $exts);
while (($file = readdir($handle)) !== false) {
foreach ($exts as $ext) {
if (preg_match('/\.' . $ext . '$/i', $file, $test)) {
$files[] = $file;
}
}
}
closedir($handle);
if (count($files) >= 15) {
shuffle($files);
$random_keys = array_rand($files, 15);
foreach ($random_keys as $key) {
$file_path = $folder . $files[$key];
if (file_exists($file_path)) {
require $file_path;
echo "<br>";
} else {
echo "File not found: " . $files[$key] . "<br>";
}
}
} else {
echo "Not enough PHP files in the directory.";
}
} else {
echo "Unable to open directory: $folder";
}
} else {
echo "Directory does not exist: $folder";
}
?>