PHP如何生成唯一的数字ID,注意是数字的,不要字符串的
走同样的路,发现不同的人生
@magicgod i think you can @SegmentFault to solve your question
根据snowflake算法编写的PHP扩展:https://github.com/liexusong/...
不太明白题主的意思,是用在什么场景呢?在数据库的话直接设置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);
思路大概是时间戳加上随机数拼凑,具体实现当然楼主根据需求再做修改虽然根据计算基本可以得出唯一,但是不能确保,最好入库加唯一键,通过查询来保证唯一值
事先生成一个数字池,然后要用的时候从池子取出就行了如果那个数字释放了,直接放回池子就可以了
这样的话,随机啥的都好解决
@magicgod i think you can @SegmentFault to solve your question
根据snowflake算法编写的PHP扩展:https://github.com/liexusong/...
不太明白题主的意思,是用在什么场景呢?在数据库的话直接设置ID自增不就可以了吗?如果是数组的话,那就直接$i++咯
可以生成一个保证同一时空内不重复的uuid或者guid,这个开源的类有很多,自己也可以写,根据当前时间戳+随机因子.随机因子可包括当前的pc的mac地址和随机字符串和当前代码的行数等等,PHP内置的函数:
com_create_guid可以完成你的功能.如果你不满足,github上有许多开源的实现.
补充:1应该是要固定长度 2遇到字母转成数字或将随机引起用数字表示
有一个办法,用当前时间戳,纯数字
贴上我一段伪代码,我使用过的id生成器
思路大概是时间戳加上随机数拼凑,具体实现当然楼主根据需求再做修改
虽然根据计算基本可以得出唯一,但是不能确保,最好入库加唯一键,通过查询来保证唯一值
事先生成一个数字池,然后要用的时候从池子取出就行了
如果那个数字释放了,直接放回池子就可以了
这样的话,随机啥的都好解决