Php 为什么';在一种方法的内部工作吗?
我正在研究php中的字符串随机化方法。在方法之外,一切都正常发生。但是,在方法内部,我得到以下错误:Php 为什么';在一种方法的内部工作吗?,php,Php,我正在研究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;
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;
}
作为Java程序员,我知道我做错了什么。只是不是那样;)非常感谢您提供的任何帮助,并提前向任何回应您的人表示感谢
EDIT:我知道存在范围问题,因此我将$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);
功能滚动($validChars)
{
$dir=“s/”;
对于($i=0;$i<5;$i++)
{
$pick=mt_rand(1,strlen($validChars));
$charPick=$validChars[$pick-1];
$dir.=$charPick;
}
返回$dir;
}
$validChars=“abcdefghijklmnopqrstuvxyz012456789-”;
回音辊($validChars);
您不了解消息的哪一部分?函数中的$validChars在哪里初始化?它是空的?您有一个范围问题,请参见方法之外的它是$validChars=“abcdefghijklmnopqrstuvwxyz012456789-”;然后您需要global$validChars函数顶部的code>不是这样工作的。您可以通过在roll
函数的定义中添加一个名为$validChars
的新参数来解决此问题。好的,我使用了您的fix MartyIX,但我这样调用它时出现了一个错误:$url roll($validChars);
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);