PHP Rand()不工作相同的结果在不同的Rand()变量


PHP Rand() not working same result in different rand () variables..

我有这样的代码:

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

这个不能工作,因为rand()期望参数2可以工作,而这个参数是一个字符串。

是否有可能使rand()与变量参数一起工作?

提前感谢您的帮助。

编辑:

更好地解释这段代码:

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

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

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

使用$hongi来获取一个介于"2"和数组最后一个值之间的随机值。

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

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

. ./电机/sector1/17001400300120110111900.html. ./电机/sector1/17001400300120110111920.html. ./电机/sector1/17001400300120110111930.html. ./电机/sector1/17001400300120110111950.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"变量都是相同的结果。为什么?

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

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

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

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

$im = glob($directory . "*.html");
$last = count($im);
$hongi= rand(2, $last - 1); // -1 because arrays start at 0
$random_file = $im[$hongi];

类型转换可能有帮助:

$hongi= rand(2, (int)$last);