PHP:随机读取所有文件?

时间:2010-06-02 07:18:55

标签: php random

我想知道是否有一种以随机顺序读取目录的方法。

使用以下代码我正在通过目录拇指运行它在我的网站上打印图像。但是,它们总是按字母顺序读取,我想知道是否有办法随机执行此操作?

<?php
$path = 'thumbs';
if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..' && $file != '.DS_Store' && $file != 'Thumbs.db') {
                print "<img class='thumb' src='$path/$file'/>";

        } else {
            //no proper file
        }
    }
    closedir($handle);
}
?>

谢谢你的建议!

问候

5 个答案:

答案 0 :(得分:3)

为什么不把结果放在一个数组中然后随机地改组数组呢?

答案 1 :(得分:0)

而不是打印图像将文件名放在一个数组中,当循环结束时将其洗牌,然后在此之后再打一个循环来打印值。

答案 2 :(得分:0)

尝试使用此功能:

function getDirContent($dir='./'){
if ( is_dir($dir) ) {
    $fd = @opendir($dir);
    while ( ($part = @readdir($fd)) == TRUE ) {
        clearstatcache();
        $dir_array[] = $part;
    }
    if($fd == TRUE) {
        closedir($fd);
    }
    if (is_array($dir_array)) {
        shuffle($dir_array);
        return $dir_array;
    } else {
        Return FALSE;
    }
}

}

答案 3 :(得分:0)

$files = glob("$path/*.[JjGg][PpIi][GgFf]");
shuffle($files);

答案 4 :(得分:0)

我知道这是一篇旧帖子,但这段代码可能对搜索的人有用:

$dir = 'path/to/dir';
  if ( $handle = opendir($dir) ) {
  $files = array();
  while ( false !== ($file = readdir($handle)) ) {
  if ($file != '.' && $file != '..') {
     array_push($files,$file);
 }
}
  closedir($handle);
  shuffle($files); // <- THIS DID THE TRICK**
  foreach( $files as $file ) {
  echo $file;
  }
}