PHP 脚本显示随机文件数组的问题

问题描述 投票:0回答:1

我正在使用 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]];

?>
php random
1个回答
0
投票

我更新了逻辑,还添加了一些条件,以便代码可以轻松调试。

还有一件事,您已将限制固定为 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";
}
?>
© www.soinside.com 2019 - 2024. All rights reserved.