2010-06-02 90 views
0

我想知道是否有以隨機順序閱讀目錄的方法。PHP:讀取所有文件,但隨機?

用下面的代碼我正在運行目錄的大拇指,它在我的網站上打印圖像。然而,他們總是按字母順序閱讀,我不知道是否有辦法隨機做這件事?

<?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

HTTP:/ /www.php.net/manual/en/function.readdir.php#90770 – Sarfraz 2010-06-02 07:23:01

回答

3

爲什麼不把結果放在數組中,然後隨機洗牌數組?

0

而不是打印圖像把文件名稱放入一個數組中,當循環結束時對其進行隨機打印,並在此之後打印另一個循環以打印值。

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; 
    } 
} 

}

0
$files = glob("$path/*.[JjGg][PpIi][GgFf]"); 
shuffle($files); 
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; 
    } 
}