У меня есть следующий код, который я собрал из разных примеров учебников:
<?php $stamp = date("Ymdhis"); $random_id_length = 6; $rndid = crypt(uniqid(rand(),1)); $rndid = strip_tags(stripslashes($rndid)); $rndid = str_replace(".","",$rndid); $rndid = strrev(str_replace("/","",$rndid)); $rndid = substr($rndid,0,$random_id_length); $orderid = "$stamp-$rndid"; $orderid = str_replace(".", "", "$orderid"); echo($orderid); ?>
FIDDLE: http://phpfiddle.org/main/code/27d-qfw
Я хотел бы, чтобы это создало число; текущее время, за которым следует 6-значное случайное число.
Например: 20130710045730-954762
Однако на данный момент случайные цифры также включают буквы.
Например: 20130710045730-Z3sVN2
Как я могу редактировать код, чтобы просто включать номера? Любая помощь приветствуется.
uniqid()
уже вернет числа. Но в их шестнадцатеричном представлении. В общем, вы можете просто преобразовать их в десятичные числа:
echo hexdec(uniqid());
Значение может быть значимым только в 64-битной системе, так как оно очень велико и выходит за пределы 32-битного целого числа со знаком (например, php). И в этом все дело. uniqid()
использует такие большие числа вместе с другими методами, чтобы обеспечить высокий уровень uniqness. Если вы используете только 6 цифр, вы больше не можете этого выдавать. Риск того, что значения столкнутся, будет высоким.
Я бы предложил создать широкомасштабную унифицированность приложения, используя значение auto_increment в базе данных или что-то подобное этому.
Если это случайная строка, используйте что-то вроде этого:
$stamp = date("Ymdhis"); $random_id_length = 6; $rndid = generateRandomString( $random_id_length ); $orderid = $stamp ."-". $rndid; echo($orderid); function generateRandomString($length = 10) { $characters = '0123456789'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; } return $randomString; } // Output example: 20130710055714-462231
Пример: http://codepad.org/eukiOb6S
Fn изменен с https://stackoverflow.com/a/4356295/1265817
Используйте этот код. Я думаю, что это будет помощь.
Rand (100000,999999)
Введите два числа, номера которых вы хотите
Использовать это:
str_pad(rand(0,'9'.round(microtime(true))),11, "0", STR_PAD_LEFT);