Helpex - Trao đổi & giúp đỡ Đăng nhập
13

Vui lòng làm việc trên một Dự án trên Laravel và tôi muốn Tạo một Số Ngẫu nhiên ở định dạng này: một ký tự ở bất kỳ thứ tự vị trí nào và các số nguyên còn lại. Ví dụ: C87465398745635, 87474M745436475, 98487464655378J8, v.v. và đây là Bộ điều khiển của tôi:

    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;
}

Nhưng có vẻ như nó đang tạo ra một cái gì đó khác như thế này: ZsbpEKw9lRHqGbv, i7LjvSiHgeGrNN8, pyJEcjhjd3zu9Su Tôi đã thử tất cả những gì có thể nhưng không thành công, Vui lòng bất kỳ giải pháp trợ giúp nào sẽ được đánh giá cao, Cảm ơn

13 hữu ích 1 bình luận 71k xem chia sẻ
21

Nếu bạn muốn tạo chuỗi ngẫu nhiên như đã nói, hãy thay thế:

$string = str_random(15);

với

// 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);

Biên tập:

Trước đây, mã không phải lúc nào cũng tạo ra một ký tự alpha ngẫu nhiên. Đó là bởi vì Laravel's str_randomtạo ra một chuỗi chữ-số ngẫu nhiên và đôi khi hàm đó trả về một giá trị số ( xem tài liệu ).

21 hữu ích 5 bình luận chia sẻ
2

Điều này sẽ cung cấp cho bạn số ngẫu nhiên từ 2 đến 50.

$randomId       =   rand(2,50);
2 hữu ích 0 bình luận chia sẻ
1

Giả sử rằng $numberbạn chuyển qua createPin là độ dài của pin:

function generatePin( $number ) {
    // Generate set of alpha characters
    $alpha = array();
    for ($u = 65; $u <= 90; $u++) {
        // Uppercase Char
        array_push($alpha, chr($u));
    }

    // Just in case you need lower case
    // for ($l = 97; $l <= 122; $l++) {
    //    // Lowercase Char
    //    array_push($alpha, chr($l));
    // }

    // Get random alpha character
    $rand_alpha_key = array_rand($alpha);
    $rand_alpha = $alpha[$rand_alpha_key];

    // Add the other missing integers
    $rand = array($rand_alpha);
    for ($c = 0; $c < $number - 1; $c++) {
        array_push($rand, mt_rand(0, 9));
        shuffle($rand);
    }

    return implode('', $rand);
}
1 hữu ích 0 bình luận chia sẻ
1

Bạn có thể sử dụng rand()hàm để tạo một số ngẫu nhiên. Bạn cũng có thể tạo một số ký tự và thêm tiền tố vào rand()đó.

1 hữu ích 0 bình luận chia sẻ
1

Tạo số ngẫu nhiên

echo generateRandomString(6) // Ex j4nDqQRiYafD

Thực hiện

function generateRandomString(int $n=0)
{
  $al = ['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', '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', '2', '3', '4', '5', '6', '7', '8', '9'];

  $len = !$n ? random_int(7, 12) : $n; // Chose length randomly in 7 to 12

  $ddd = array_map(function($a) use ($al){
    $key = random_int(0, 60);
    return $al[$key];
  }, array_fill(0,$len,0));
  return implode('', $ddd);
}

Sử dụng chức năng phạm vi

range - Tạo mảng chứa một dải phần tử Tạo một mảng chứa một dải các phần tử.

Sử dụng hàm array_rand

Chọn một hoặc nhiều mục nhập ngẫu nhiên từ một mảng và trả về khóa (hoặc các khóa) của các mục nhập ngẫu nhiên. Nó sử dụng một trình tạo số ngẫu nhiên giả không phù hợp cho các mục đích mật mã.

1 hữu ích 0 bình luận chia sẻ
1

sử dụng hàm rand.

Thí dụ:

 echo rand(0, 99999);
1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ php string random laravel , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading