2012-12-29 112 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)中阅读。因此这不起作用 –