我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

实际业务里面经常有实现随机数id的需求,一般都是取当前的微秒数值再叠加一些其它随机元素。在这里,可能会用到php官方提供的一个随机id的函数:uniqid()。它有些类似大家已经熟知的uuid(),但是并不一样。走进正文代码,看看这个uniqid()函数是怎么使用的吧?

苏南大叔:php代码,如何使用uniqid() 返回随机唯一id值? - php-uniqid
php代码,如何使用uniqid() 返回随机唯一id值?(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程感想感悟。本文测试环境:win10php@8.2.11nginx@1.15.11

函数原型

uniqid()的函数原型如下:

uniqid(string $prefix = "", bool $more_entropy = false): string

不加参数的默认情况下,返回值类似:

6583b58906428
6583b591ea379
6583b59b0aa96

可见:返回值就后7位相对变化,前面几位数是不变的。

参数一:prefix

prefix参数增加点前缀文字:

echo uniqid('php_');  //php_6583b5fea56c6

参数二:more_entropy

因为不敢保证其实实在在的返回值唯一性,这里增加了额外的补充参数。再次增加唯一性。

echo uniqid('',true);            // 6583b79b9cf902.77607919
echo uniqid(more_entropy:true);  // php8新写法,6583b79b9cf9a4.29953727

唯一性

官方说明里面,明确说明:并不保证返回值的唯一性。并且,增加了$more_entropy参数来规避可能存在的唯一性冲突。

for ($i = 0; $i < 5; $i++) {
    echo uniqid(), PHP_EOL;
}

输出:

6583b8e7dda49
6583b8e7dda4e
6583b8e7dda4f
6583b8e7dda50
6583b8e7dda51

输出值是有规律的,看出来了吧?

结语

php已经不是世界上最好的语言了,这是个多么伤感的故事。更多苏南大叔的php文章,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php