-1

我正在研究 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
4

1 回答 1

1

该变量$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);   
于 2013-11-10T17:34:09.343 回答