ホームページ  >  に質問  >  本文

PHP如何生成唯一的数字ID

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

怪我咯怪我咯2772日前1805

全員に返信(17)返信します

  • 黄舟

    黄舟2017-04-10 16:36:33

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

    返事
    0
  • PHPz

    PHPz2017-04-10 16:36:33

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

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-10 16:36:33

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

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:36:33

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

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

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:36:33

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

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 16:36:33

    贴上我一段伪代码,我使用过的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);

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

    返事
    0
  • PHPz

    PHPz2017-04-10 16:36:33

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

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

    返事
    0
  • キャンセル返事