嗨,我有这个功能,它返回一个通知:
注意:未初始化的字符串偏移量
function generaterandomkey($length) {
$string='';
$characters = "0123456789abcdef";
for ($p = 0; $p < $length ; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
return $string;
}
Run Code Online (Sandbox Code Playgroud)
受影响的一行是这样的:
$string .= $characters[mt_rand(0, strlen($characters))];
Run Code Online (Sandbox Code Playgroud)
我尝试过使用大括号,但它不起作用.如果有人可以指出一些建议,我将非常感激.谢谢.
你偶尔超越$characters,因为strlen($characters),这应该是strlen($characters) - 1.你的随机范围应该从零开始,你需要以长度减一来结束.如果长度$characters为10,则最后的从零开始的数组索引为9,这将成为随机选择的上限.
$string='';
$characters = "0123456789abcdef";
for ($p = 0; $p < $length ; $p++) {
$string .= $characters[mt_rand(0, strlen($characters) - 1)];
}
Run Code Online (Sandbox Code Playgroud)
因为您是随机选择的,所以您不会总是收到通知 - 只有mt_rand()在循环中的某个点返回其最大值时才会发生.