这是我的代码
<?php
function random_id() {
$chars = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$id = '';
for ($i = 0; $i < 5; ++$i)
{
$id .= $chars[rand(1, 26)];
}
echo $id;
}
random_id();
?>
Run Code Online (Sandbox Code Playgroud)
它不断生成带有5个小写数字的ID,而且偶尔它会有一个数字.我也尝试过mt_rand(),并且在循环之前使用srand(time())并srand(microtime())在脚本的开头.
此外,应该rand(1, 26)还是rand(0, 25)?
您的字符串超过26个字符.改为使用此rand函数:
rand(0, strlen($chars) - 1)
Run Code Online (Sandbox Code Playgroud)
因此,您不是在每次迭代时计算字符串长度,而是保持动态,因此值得考虑将计算移到循环外部,如下所示:
$chars = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$chars_cnt = strlen($chars) - 1;
for ($i = 0; $i < 5; ++$i)
{
$id .= $chars[rand(1, $chars_cnt)];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |