在php中生成唯一编号时,我始终无法确定这一点。
time()
比mt_rand()
更独特吗?
time()
似乎对我来说更独特,因为时间日期不能重复两次。
mt_rand()
我不确定php默认的唯一整数提供 - 是否会及时重复一个唯一的整数?
答案 0 :(得分:2)
您考虑过uniqid()
吗?
另外,要回答你的实际问题:与time()
不同,mt_rand肯定会最终重复一个数字。但是,如果您希望它是唯一的,则每秒只能使用time()
。
答案 1 :(得分:2)
如果你有很多用户一次性使用time()
,你可能会在同一秒内发生两件事,从而使time()
不像{{1}那样独特}。使用mt_rand()
,您几乎保证获得独特的结果,但您可能不会。
另一种解决方案是使用microtime()
返回当前时间(以微秒为单位),这将为您提供唯一的标记,因为在同一微秒中发生事件会非常特别。您还可以考虑uniqid()
从当前时间生成ID(以微秒为单位)(最有可能在内部使用mt_rand()
。
答案 2 :(得分:2)
mt_rand可以生成相同的值两次但你可以想到它的概率,其中time返回自unix epoch以来的秒数并且不能重复两次。但它每秒都会改变,这意味着如果在一秒钟内调用多次,它将返回相同的结果,其中mt_rand可能会返回不同的值。
答案 3 :(得分:1)
使用time()通常不是唯一ID的好主意,原因如下: