我想知道是否有一种以随机顺序读取目录的方法。
使用以下代码我正在通过目录拇指运行它在我的网站上打印图像。但是,它们总是按字母顺序读取,我想知道是否有办法随机执行此操作?
<?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);
}
?>
谢谢你的建议!
问候
答案 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;
}
}