Подтвердить что ты не робот

Как я могу сгенерировать 6-значный уникальный номер?

Как я могу сгенерировать 6-значный уникальный номер? У меня есть механизмы проверки для проверки дубликатов записей.

4b9b3361

Ответ 1

$six_digit_random_number = mt_rand(100000, 999999);

Как и все числа от 100 000 до 999 999, конечно, шесть цифр.

Ответ 2

Если вы хотите, чтобы он начинался с 000001 и переходите к 999999:

$num_str = sprintf("%06d", mt_rand(1, 999999));

Помните, что он хранится в виде строки.

Ответ 3

Другой:

str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT);

В любом случае, для уникальности вам нужно будет проверить, что ваш номер еще не был использован.

Вы скажете, что вы проверяете дубликаты, но будьте осторожны, так как при использовании большинства чисел количество попыток (и, следовательно, время) для получения нового номера будет увеличиваться, что может привести к очень длительным задержкам и истощению ресурсов ЦП.

Я бы посоветовал, если возможно, отслеживать доступные идентификаторы в массиве, затем произвольно выбирайте идентификатор среди доступных, делая что-то вроде этого (если список идентификаторов хранится в памяти):

$arrayOfAvailableIDs = array_map(function($nb) {
    return str_pad($nb, 6, '0', STR_PAD_LEFT);
}, range(0, 999999));

$nbAvailableIDs = count($arrayOfAvailableIDs);

// pick a random ID

$newID = array_splice($arrayOfAvailableIDs, mt_rand(0, $nbAvailableIDs-1), 1);
$nbAvailableIDs--;

Вы можете сделать что-то подобное, даже если список идентификаторов хранится в базе данных.

Ответ 4

<?php
$file = 'count.txt';

//get the number from the file
$uniq = file_get_contents($file);

//add +1
$id = $uniq + 1 ;

// add that new value to text file again for next use
file_put_contents($file, $id);

// your unique id ready
echo $id;
?>

Надеюсь, это сработает. Я использую ту же технику на своем веб-сайте.

Ответ 5

Здесь еще один:

substr(number_format(time() * rand(),0,'',''),0,6);

Ответ 6

Это приведет к генерации случайного 6-значного числа

<?php
    mt_rand(100000,999999);
?>

Ответ 7

        $characters = '123456789';
        $charactersLength = strlen($characters);
        $randomString = '';
            for ($i = 0; $i < 6; $i++) {
                $randomString .= $characters[rand(0, $charactersLength - 1)];
            }
        $pin=$randomString; 

Ответ 8

Я бы использовал алгоритм, грубая сила могла бы быть следующей:

Первый цикл: Создайте случайное число от 100 000 до 999999 и вызовите x1

Второй раз через цикл Создайте случайное число между 100 000 и x1, вызовите этот xt2, затем создайте случайное число между x1 и 999,999, вызовите этот xt3, затем произвольно выберите x2 или x3, вызовите этот x2

N-е время через цикл Создайте случайное число от 100 000 до x1, x1 и x2 и от x2 до 999,999 и так далее...

следить за конечными точками, также следить за x1

Ответ 9

<?php echo rand(100000,999999); ?>

вы можете создать случайное число

Ответ 10

В PHP 7. 0+ я бы предложил random_int($min, $max) вместо mt_rand().

$randomSixDigitInt = \random_int(100000, 999999);

с php.net:

предосторожность Эта функция не генерирует криптографически безопасные значения и не должна использоваться в криптографических целях. Если вам нужно криптографически безопасное значение, рассмотрите возможность использования взамен random_int(), random_bytes() или openssl_random_pseudo_bytes().

Так что это зависит в основном от контекста. Я также добавлю, что в PHP 7.1.0 rand() теперь является псевдонимом mt_rand().

ура