2012-12-29 113 views
0

我有這個簡單的一行:PHP隨機排序水珠

 $images = glob($directory . "*.html"); 

它返回這樣的文件列表:
如1

17001400300120110004600.html 
17001400300120110004700.html 
17001400300120110004800.html 
17001400300120110004900.html 
17001400300120110005000.html 

的問題是,我不需要一個有序的列表。我需要一個隨機列表,像這樣:

e.g 2

17001400300120110004700.html 
17001400300120110005000.html 
17001400300120110004900.html 
17001400300120110004600.html 
17001400300120110005800.html 

我試着NOSORT ($images = glob($directory . "*.html", GLOB_NOSORT);)標誌,但返回像在第一個例子中的有序列表。

我怎樣才能得到一個隨機列表?

+1

只要做一些像shuffle($ images);' – PhearOfRayne

+1

即使你使用'NOSORT',它們被排序的原因是因爲它使用它們存在於目錄中的順序,這通常是文件的順序被創建,並且它們可能是按數字順序創建的。 – Barmar

回答

6

對從glob返回的數組使用shuffle

使用NOSORT不會讓你的陣列隨機的,它只會閱讀他們爲了他們出現在目錄中,而不是按名稱排序它們,文檔狀態:

GLOB_NOSORT - 因爲他們出現返回文件在目錄(無 排序)

有記住,shuffle需要數組作爲referrence所以你需要做的只是這一點:

$images = glob($directory . "*.html"); 
shuffle($images); 
-1
$images = shuffle(glob($directory . "*.html")); 
+0

shuffle返回一個布爾值,可以在[documentation](http://php.net/manual/en/function.shuffle.php)中閱讀。因此這不起作用 –