嗨,我有这个函数,它返回一个通知:
注意:未初始化的字符串偏移量
function generaterandomkey($length) {
$string='';
$characters = "0123456789abcdef";
for ($p = 0; $p < $length ; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
return $string;
}
受影响的线路是这样的:
$string .= $characters[mt_rand(0, strlen($characters))];
我尝试过用牙套做,但没有效果。如果有人能指出一些建议,我将不胜感激。谢谢。
你偶尔会超越$characters
因为strlen($characters)
,这应该是strlen($characters) - 1
。您的随机范围应从零开始,并且需要以长度结束减一。如果长度为$characters
是 10,那么最后一个从零开始的数组索引是nine,这将成为随机选择的上限。
$string='';
$characters = "0123456789abcdef";
for ($p = 0; $p < $length ; $p++) {
$string .= $characters[mt_rand(0, strlen($characters) - 1)];
}
因为你是随机选择的,所以你不会总是收到通知——只有在以下情况下才会发生:mt_rand()
在循环中的某个时刻返回其最大值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)