加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP生成带日期的唯一订单号

发布时间:2020-12-13 13:38:04 所属栏目:PHP教程 来源:网络整理
导读:我想按照以下12种数字格式生成唯一标识符: YYYYMMDDXXXX 例: 201403052318 哪里: YYYYMMDD是当前日期值,其他XXXX是随机生成的值. $today = date("Ymd");$rand = sprintf("%04d",rand(0,9999));$unique = $today . $rand; 每日所需的唯一卷大约是100.我应
我想按照以下12种数字格式生成唯一标识符:
YYYYMMDDXXXX

例:

201403052318

哪里:

YYYYMMDD是当前日期值,其他XXXX是随机生成的值.

$today = date("Ymd");
$rand = sprintf("%04d",rand(0,9999));
$unique = $today . $rand;

每日所需的唯一卷大约是100.我应该使用什么方法来防止可能重复的rand值或使所有id最大的唯一?也许可以使用当前时间函数来压缩最后4个字符中的这些数字?

编辑:
连接到MySQL数据库的唯一值作为表的主索引.它是未连接到数据库中任何存储信息的初始值.

你不能依赖rand(),有可能你会生成一个副本(很少见的兰特(0,9999)生成一个重复,但这将在某些时候).

因此,不要使用rand(),只需创建一个增量值(比如说,从1开始)并附加到生成的日期.

下次当你重新生成一个新的id时,抓住那个增量值(比如你把它存储在某处……必须是1对吗?)状态,增加它并将它附加到你的新日期.

不是一个理想的解决方案..(评论家欢迎)

你可以使用一个与sha-1和时间相结合的uniqid,并在它们的前4个字符上做一个substr().

<?php
$today = date("Ymd");
$rand = strtoupper(substr(uniqid(sha1(time())),4));
echo $unique = $today . $rand;

输出:

201403094B3F

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读