0

我有这个代码:

$im = glob($directory . "*.html");
$last = end($im );
$hongi= rand(2, $last);

这不起作用,因为 rand () 期望参数 2 起作用,并且该参数是一个字符串。

可以使 rand () 与可变参数一起使用吗?

在此先感谢您的帮助。

编辑:

更好地解释这段代码:

我有数千个文件,每个文件名都是一个数字。

我在一个数组中提取这些文件的名称。

我使用 end() 获取最后一个值。

使用 $hongi 获得介于“2”和数组最后一个值之间的随机值。

所以随机值永远不会超过数组的最后一个值。

我有一个非常基本的错误,因为我得到了这样的文件路径:

../motor/sector1/17001400300120110111900.html ../motor/sector1/17001400300120110111920.html ../motor/sector1/17001400300120110111930.html ../motor/sector1/170101140030.html

所以我这样做

$im = glob($directory . "*.html");
$last = end($im );
$numl = substr($last,24,-5);
$hongi= rand(2, $num1);

那很好,但是我这样做了:

 $hongi= rand(2, $num1);
 $hongi1= rand(2,$num1);
 $hongi2= rand(2, $num1);
$hongi3= rand(2, $num1);
 $hongi4= rand(2, $num1);

但是所有“hongi”变量都是相同的结果。为什么?

4

3 回答 3

0

如果您希望使用字符串进行随机选择,则需要将它们放入数组中并进行 Array shuffle。

shuffle($array_of_filenames);
echo $array_of_filenames[0];  

更多示例: http: //php.net/manual/en/function.shuffle.php

于 2012-12-31T06:24:13.470 回答
-1

类型转换可能会有所帮助:

$hongi= rand(2, (int)$last);
于 2012-12-31T06:20:50.973 回答
-1

如果你想得到一个随机的文件名,首先,你使用rand()不正确。最小值和最大值之间需要 2 个整数。您为 max 提供的值是文件路径,而不是整数。你想要count()$im,并使用它:

$im = glob($directory . "*.html");
$last = count($im);
$hongi= rand(2, $last - 1); // -1 because arrays start at 0
$random_file = $im[$hongi];
于 2012-12-31T06:28:23.950 回答