明凯博客

关注网站技术,一个特立独行的程序员

PHP生成唯一订单号的四种方法

我们做商城类项目经常需要生成唯一订单号,
我们来用总结出PHP生成四种方法。

方法一:

1
return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

方法二:

1
2
return date('Ymd').substr
(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);

方法三:

1
2
3
4
5
6
7
public function make_order($user_id)
{
 return mt_rand(10,99)
 . sprintf('%010d',time() - 946656000)
 . sprintf('%03d', (float) microtime() * 1000)
 . sprintf('%03d', (int) $user_id % 1000);
}

方法四:

1
2
3
4
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$orderSn = $yCode[intval(date('Y')) - 2011] . strtoupper
(dechex(date('m'))) . date('d') . substr(time(), -5)
 . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));

我们推荐使用方法二来生成订单号。

uniqid()是根据系统时间经过一定算法得到的一个结果。
uniqid() 函数基于以微秒计的当前时间,生成一个ID,但是此函数不保证返回值的唯一性。
由于绝大多数系统使用 NTP 或者类似服务调整系统的时间,所以系统时间经常发生变化。 此外,进程/线程可能不会返回唯一的 ID。

, ,

相关文章

3 条评论 “PHP生成唯一订单号的四种方法

发表评论

电子邮件地址不会被公开。 必填项已用*标注