我正在研究 php 中的字符串随机化器方法。在方法之外,一切都正常发生。但是,在该方法内部,我收到以下错误:
Warning: mt_rand() [function.mt-rand]: max(0) is smaller than min(1) in /home/content/44/10902444/html/makepage.php on line 14
该方法的代码为:
function roll()
{
$dir = "s/";
for($i = 0; $i < 5; $i++)
{
$pick = mt_rand(1, strlen($validChars));
$charPick = $validChars[$pick-1];
$dir .= $charPick;
}
return $dir;
}
我是这样称呼它的:
$url = roll();
while(is_dir($url))
{
$url = roll();
}
作为Java程序员,我知道我做错了什么。只是不是那是什么;)非常感谢任何帮助,并提前感谢任何回复的人!
编辑:我知道存在范围问题,因此我将$validChars
声明移至该方法中。不过我仍然收到错误:
Parse error: syntax error, unexpected T_STRING in /home/content/44/10902444/html/makepage.php on line 20
变量$validChars
在第一次运行 for 循环时未定义。因此$validChars
变量的长度为 0。您有效地调用:
mt_rand(1, 0)
此函数调用会导致您发布的通知。
编辑:
此代码有效:
function roll($validChars)
{
$dir = "s/";
for($i = 0; $i < 5; $i++)
{
$pick = mt_rand(1, strlen($validChars));
$charPick = $validChars[$pick-1];
$dir .= $charPick;
}
return $dir;
}
$validChars = "abcdefghijklmnopqrstuvwxyz0123456789-_.";
echo roll($validChars);