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。
Mac下Sublime Text 3配置php语法错误提示插件PHPCS CodeIgniter基本配置信息在config.php文件详细说明
学习了,这个代码我带走了
并不能带走,你看第四个方法…超过2021年就要报错了
只是个方案可以自由更改。