【发布时间】:2014-04-12 07:34:12
【问题描述】:
我想生成以下 12 位数字格式的唯一标识符:
YYYYMMDDXXXX
例子:
201403052318
地点:
YYYYMMDD 是当前日期值,其他 XXXX 是随机生成的值。
$today = date("Ymd");
$rand = sprintf("%04d", rand(0,9999));
$unique = $today . $rand;
每日所需的唯一数量约为 100。我应该使用哪些 PHP 方法来防止 rand 值可能重复或使所有 id 最大唯一?也许可以使用当前时间函数将这些数字压缩到最后 4 个字符中?
编辑: 作为表的主要索引连接到 MySQL 数据库的唯一值。它是初始值,未连接到数据库中的任何存储信息。
【问题讨论】:
-
是否涉及数据库?您是否尝试最初创建一个随机数数组(不重复)并在其他地方使用它?您打算如何访问此脚本?通过 CLI 还是通过 HTTP 请求?请为您的问题添加更多详细信息以获得更准确的答案。
-
你真的需要一个随机数还是只是一些伪唯一的东西?
-
伪唯一,是否可以将小时-分钟-秒压缩为最后 4 个字符以逃避随机?
-
@KenTang,然后你可以有你的
$rand这样的变量..$rand = strtoupper(substr(uniqid(sha1(time())),0,4));