我使用函数和SRAND在php代码中得到一个未定义的偏移量

我使用函数和SRAND在php代码中得到一个未定义的偏移量,php,Php,我在下面代码的列表行中得到一个未定义的偏移量。 你知道为什么吗? 即使我得到了偏移量错误,仍然会生成密码 function generatePassword($length=6,$level=2){ list($usec, $sec) = explode(' ', microtime(true)); srand((float) $sec + ((float) $usec * 100000)); $validchars[1] = "23456789abcdefghjkmn

我在下面代码的列表行中得到一个未定义的偏移量。 你知道为什么吗? 即使我得到了偏移量错误,仍然会生成密码

function generatePassword($length=6,$level=2){

   list($usec, $sec) = explode(' ', microtime(true));
   srand((float) $sec + ((float) $usec * 100000));  

   $validchars[1] = "23456789abcdefghjkmnpqrstuvwxyz";
   $validchars[2] = "23456789abcdefghjkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";
   $validchars[3] = "23456789_!@#$%&*()-= /abcdefghjkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ_!@#$%&*()-= /";

   $password  = "";
   $counter   = 0;

   while ($counter < $length) {
     $actChar = substr($validchars[$level], rand(0, strlen($validchars[$level])-1), 1);

     // All character must be different
     if (!strstr($password, $actChar)) {
        $password .= $actChar;
        $counter++   ;
   }
   }

   re
函数生成密码($length=6,$level=2){
列表($usec,$sec)=爆炸('',微时间(真));
srand((浮动)$sec+((浮动)$usec*100000));
$validchars[1]=“23456789abcdefghjkmnpqrstuvwxyz”;
$validchars[2]=“23456789abcdefghjkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ”;
$validchars[3]=“23456789#$%&*()-=/abcdefghjkmnpqrstuvwxyzabefghjkmnpqrstuvxyz.@#$%&*()-=”;
$password=“”;
$counter=0;
而($counter<$length){
$actChar=substr($validchars[$level]),rand(0,strlen($validchars[$level])-1);
//所有的角色都必须是不同的
如果(!strstr($password,$actChar)){
$password.=$actChar;
$counter++;
}
}
重新
转换$password

}返回一个浮点值,该值从不包含空格。因此,
explode()
返回一个仅包含单个项的数组,而带有两个参数的
list
将失败,因为这将要求数组中至少包含两个项。改用
microtime(false)

list($usec, $sec) = explode(' ', microtime(false));

这不是真正的问题。请写更多关于你的错误的信息,你尝试了什么,等等。。。。我标记了这个问题请阅读PHP中著名的调试方法(例如:打印变量,或使用带断点的XDebugger,等等),并将它们应用到错误代码中,然后再发布到这里。microtime()=microtime(false)奇怪的是,这个函数仍然可以工作,它仍然会生成一个随机密码:这就是PHP的魔力。它会生成一个关于缺少列表项的警告,然后为其指定一个默认值NULL并继续,而不管警告是什么。在接下来的算术中,该NULL被转换为0,因此您仍然会得到一个随机密码,只比您预期的“随机性”低一点(?),因为其中一个输入在假定为变量时是常量。