我正在开发一个非常大的应用程序,我想创建一个非常独特的随机数,它永远不会与以前的记录匹配。这是我的代码
function random_number($maxlength = 17) {
$chary = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$return_str = "";
for ( $x=0; $x<=$maxlength; $x++ ) {
$return_str .= $chary[rand(0, count($chary))];
}
return $return_str;
}
现在它工作得很好,但有时它会给我错误
Notice: Undefined offset: 62 in test.php on line 8
其中第8行为
$return_str .= $chary[rand(0, count($chary))];
有人能帮我修一下吗?
其次,CI中是否存在随机数的函数?
根据手册,
int rand(int$min,int$max)
如果在没有可选min的情况下调用,则max参数rand()将返回一个介于0和getrandmax()之间的伪随机整数。例如,如果您想要一个介于5和15之间的随机数(包括5和15),请使用rand(5,15)。
因此,您必须更改rand()
函数中的范围参数,从rand(0, count($chary))
更改为rand(0, count($chary)-1)
function random_number($maxlength = 17) {
$chary = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$return_str = "";
for ( $x=0; $x<=$maxlength; $x++ ) {
$return_str .= $chary[rand(0, count($chary)-1)];
}
return $return_str;
}
试试uniqid,它是标准的php函数,你不需要发明自己的自行车。它有缺点,但它的另一个主题。
我正在开发一个非常大的应用程序,我想创建一个非常独特的随机数,它永远不会匹配以前的记录
然后不要使用以下任何功能:
rand()
mt_rand()
lcg_value()
str_shuffle()
uniqid()
他们都很虚弱。相反,您需要random_int()
。否则,被接受的答案是……可以接受的。