在拉拉维尔生成随机数

2022-08-30 21:41:41

请正在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 我已经尝试了所有我能做的,但没有成功,请任何帮助的解决方案将不胜感激,谢谢


答案 1

如果你想像你说的那样生成随机字符串,请替换:

$string = str_random(15);

// Available alpha caracters
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

// generate a pin based on 2 * 7 digits + a random character
$pin = mt_rand(1000000, 9999999)
    . mt_rand(1000000, 9999999)
    . $characters[rand(0, strlen($characters) - 1)];

// shuffle the result
$string = str_shuffle($pin);

编辑:

以前,代码不会一直生成随机的字母字符。这是因为Laravel's会生成一个随机的字母数字字符串,有时该函数返回一个数值(参见文档)。str_random


答案 2

这应该给你2到50之间的随机数。

$randomId       =   rand(2,50);

推荐