请在Laravel上的一个项目工作,我想生成一个随机数,格式如下:任意位置顺序的一个字符,其余为整数。例如:C87465398745635、87474M745436475、98487464655378J8等,这是我的控制器:
function generatePin( $number ) {
$pins = array();
for ($j=0; $j < $number; $j++) {
$string = str_random(15);
$pin = Pin::where('pin', '=', $string)->first();
if($pin){
$j--;
}else{
$pins[$j] = $string;
}
}
return $pins;
}
但它似乎正在生成其他类似的东西:ZsbpEKw9lRHqGbv,i7LjvSiHgeGrNN8,pyJEcjhjd3zu9Su我已经尝试了所有我可以,但没有成功,请任何帮助的解决方案将不胜感激,谢谢
6条答案
按热度按时间rn0zuynd1#
如果你想生成你所说的随机字符串,替换:
与
编辑:
之前,代码并不是一直生成随机的字母字符,这是因为Laravel的
str_random
生成随机的字母数字字符串,有时该函数返回一个数字值(see docs)。igetnqfo2#
这应该会给予你2和50之间的随机数。
4si2a6ki3#
请使用函数兰德。
示例:
q9rjltbz4#
在laravel中,Str类已在 Bootstrap 中使用别名
手动创建
生成随机数
实施
使用range函数
range -创建一个包含元素范围的数组创建一个包含元素范围的数组。
使用array_rand函数
从数组中选取一个或多个随机项,并返回随机项的密钥。它使用不适合加密用途的伪随机数生成器。
qvsjd97n5#
假设您传递给generatePin的
$number
是pin的长度:fv2wmkja6#
可以使用
rand()
函数生成一个随机数,也可以创建一些字符并将其作为rand()
的前缀。