PHP:如何创建一个独特的#

时间:2010-01-11 18:36:34

标签: php

我见过很多关于如何在PHP中使用uniqid()来创建唯一字符串的例子,但是需要创建一个唯一的订单号(只有整数,没有字母)。

我喜欢uniqid()的想法,因为根据我的理解,它使用日期/时间,因此创建另一个相同的id的机会是零...(如果我正确理解函数)< / p>

4 个答案:

答案 0 :(得分:3)

mt_rand应该可以做到这一点。

它在第一个参数和第二个参数之间生成一个随机数。例如,要生成500到1000之间的随机数,您需要:

$number = mt_rand(500,1000);

但如果您将其用作订单号,则应使用自动增量列。它不仅仅是它的用途,而且如果不止一次生成相同的数字,你会怎么做?假设你正在使用MySQL,你可以read about autoincrement columns here

答案 1 :(得分:1)

使用hexdec将十六进制字符串转换为数字。 http://us.php.net/manual/en/function.hexdec.php

hexdec(uniqid())

答案 2 :(得分:0)

uniqid()做你正在考虑的事情..但是如果你把这个值插入数据库,你最好使用自动递增字段来表示ids ...这真的取决于你是什么使用ids来实现。

答案 3 :(得分:0)

我个人使用date('U')根据自UNIX EPOCH以来的秒数生成字符串。如果这不够随机(如果您认为您将在同一秒内放置两个订单),只需添加另一个mt_rand(0,9)层:

$uniqid = date('U') . mt_rand(0,9);

在几乎所有情况下,这将为您提供增量ID,除非在完全相同的秒内创建订单,在这种情况下,第二个订单可以在第一个订单之前。