Создание случайного уникального идентификатора с помощью PHP

У меня есть таблица, которая выглядит так. Это часть общей информации, когда пользователь регистрируется на моем сайте.

+------------+------------+ | user_id | username | | 312543 | Bobby | | 543765 | Victoria | +------------+------------+ 

Мне просто интересно, как бы вы создали случайный уникальный номер для user_id ? Скажем, число от 1 до 100, которого еще нет в базе данных. Я хочу выполнить это, используя PHP, а не SQL.

Solutions Collecting From Web of "Создание случайного уникального идентификатора с помощью PHP"

Улучшение ответа Нита Темного Абсолюта: вы можете использовать uniqid(rand()) . uniqid() будет генерировать число, основанное на внутренних часах вашего сервера, и rand() будет префикс его случайным числом. Поэтому, даже если два пользователя регистрируются в одной и той же самой крошечной фракции, префикс rand() присваивает им другой префикс с вероятностью более 99,99999%.

Вы можете использовать функцию uniqid PHP. Это не случайный (он основан на часах сервера), но если у вас нет двух человек в одной и той же мельчайшей части секунды, тогда он будет гарантированно быть уникальным, и он не является последовательным.

Прежде всего, я согласен с @Shankar Damodaran, гораздо лучше использовать AUTO_INCREMENT а не случайные идентификаторы, потому что, если вы начнете использовать случайные, тогда вам, возможно, придется сначала проверить, существует ли этот случайный идентификатор, а затем выбрать другой случайный и еще раз проверьте, пока, наконец, не получите уникальный.

И если вы действительно хотите, чтобы это было случайным, вы можете использовать функцию rand PHP: http://www.php.net/manual/en/function.rand.php

 function isUnique($var) { //we check here if var is unique, return TRUE on unique FALSE on non unique. } //this is my function for generating random strings(can be used for numbers) function _generateRandomString() { $chars = array_merge(range('a', 'z'), range(0, 9)); shuffle($chars); return implode(array_slice($chars, 0,25)); } //actual code: $string= _generateRandomString(); while(!isUnique($string)) //if string is unique, while loop stops. { $string= _generateRandomString(); } 

С php u можно сделать так.

 $pattern = "1234567890"; $ID = $pattern{rand(0,10)}; for($i = 1; $i < 7; $i++) { $ID .= $pattern{rand(0,10)}; }