PHP如何生成唯一的数字ID
怪我咯
怪我咯 2017-04-10 16:34:33
0
17
1915

PHP如何生成唯一的数字ID,注意是数字的,不要字符串的

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(17)
黄舟

@magicgod i think you can @SegmentFault to solve your question

PHPzhong

根据snowflake算法编写的PHP扩展:https://github.com/liexusong/...

Peter_Zhu

不太明白题主的意思,是用在什么场景呢?在数据库的话直接设置ID自增不就可以了吗?如果是数组的话,那就直接$i++咯

巴扎黑

可以生成一个保证同一时空内不重复的uuid或者guid,这个开源的类有很多,自己也可以写,根据当前时间戳+随机因子.随机因子可包括当前的pc的mac地址和随机字符串和当前代码的行数等等,PHP内置的函数:
com_create_guid可以完成你的功能.如果你不满足,github上有许多开源的实现.

补充:1应该是要固定长度 2遇到字母转成数字或将随机引起用数字表示

巴扎黑

有一个办法,用当前时间戳,纯数字

伊谢尔伦

贴上我一段伪代码,我使用过的id生成器

 $id = substr(strtotime(date("Y-m-d", time())), 0, 2) . substr(strrev(microtime()), 0, 2) . substr(mt_rand(), 0, 5) . substr(rand(), 0, 2);

$sql = "SELECT id FROM table WHERE id=" . $id . " LIMIT 1";
$data mysql_query($sql);

思路大概是时间戳加上随机数拼凑,具体实现当然楼主根据需求再做修改
虽然根据计算基本可以得出唯一,但是不能确保,最好入库加唯一键,通过查询来保证唯一值

PHPzhong

事先生成一个数字池,然后要用的时候从池子取出就行了
如果那个数字释放了,直接放回池子就可以了

这样的话,随机啥的都好解决

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan