常用生成订单号的规则
订单号就是您在购物网站购物后获得的订单号,记录的是购物订单信息。在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号。【来自百度百科】
软件开发中我们经常会遇到生成订单号的业务逻辑来记录用户下单、物流、发票、支付、结算等信息。生成订单号的方式多种多样。大部分会参考业务需求来设计生成方式,但订单号的生成规则大同小异相差不大。下面给大家总结介绍几种订单号的生成规则以供参考。
1、 随机数方法。function gen_order_rand() { $strTime = str_pad(str_replace(".", "", microtime(true)), 14, "0", STR_PAD_RIGHT); $strRand = strval(mt_rand(10000, 99999)); return $strTime . $strRand; } var_dump(gen_order_rand()); 运行结果: string(19) "1648171258258353703"
2、随机数+uid方法function gen_order_uid_rand($uid) { $strUid = str_pad(substr(strval($uid), -5), 5, "0", STR_PAD_RIGHT); $strTime = date("ymdHis"); $strRand = strval(mt_rand(1000, 9999)); return $strUid . $strTime . $strRand; } $intUid = 1234567890; var_dump(gen_order_uid_rand($intUid)); 运行结果: string(21) "678902203250120587473"
3、uniqid+crc64方法function crc64Table() { $crc64tab = []; // ECMA polynomial $poly64rev = (0xC96C5795 << 32) | 0xD7870F42; // ISO polynomial // $poly64rev = (0xD8 << 56); for ($i = 0; $i < 256; $i++) { for ($part = $i, $bit = 0; $bit < 8; $bit++) { if ($part & 1) { $part = (($part >> 1) & ~(0x8 << 60)) ^ $poly64rev; } else { $part = ($part >> 1) & ~(0x8 << 60); } } $crc64tab[$i] = $part; } return $crc64tab; } /** * @param string $string * @param string $format * @return mixed * * Formats: * crc64("php"); // afe4e823e7cef190 * crc64("php", "0x%x"); // 0xafe4e823e7cef190 * crc64("php", "0x%X"); // 0xAFE4E823E7CEF190 * crc64("php", "%d"); // -5772233581471534704 signed int * crc64("php", "%u"); // 12674510492238016912 unsigned int */ function crc64($string, $format = "%x") { static $crc64tab; if ($crc64tab === null) { $crc64tab = crc64Table(); } $crc = 0; for ($i = 0; $i < strlen($string); $i++) { $crc = $crc64tab[($crc ^ ord($string[$i])) & 0xff] ^ (($crc >> 8) & ~(0xff << 56)); } return sprintf($format, $crc); } //uniqid方法 function gen_order_uuid() { $strUuid = crc64(uniqid(), "%u"); return $strUuid; } var_dump(gen_order_uuid()); 运行结果: string(19) "2559207576599622011"
4、随机字符串+crc64方法function crc64Table() { $crc64tab = []; // ECMA polynomial $poly64rev = (0xC96C5795 << 32) | 0xD7870F42; // ISO polynomial // $poly64rev = (0xD8 << 56); for ($i = 0; $i < 256; $i++) { for ($part = $i, $bit = 0; $bit < 8; $bit++) { if ($part & 1) { $part = (($part >> 1) & ~(0x8 << 60)) ^ $poly64rev; } else { $part = ($part >> 1) & ~(0x8 << 60); } } $crc64tab[$i] = $part; } return $crc64tab; } /** * @param string $string * @param string $format * @return mixed * * Formats: * crc64("php"); // afe4e823e7cef190 * crc64("php", "0x%x"); // 0xafe4e823e7cef190 * crc64("php", "0x%X"); // 0xAFE4E823E7CEF190 * crc64("php", "%d"); // -5772233581471534704 signed int * crc64("php", "%u"); // 12674510492238016912 unsigned int */ function crc64($string, $format = "%x") { static $crc64tab; if ($crc64tab === null) { $crc64tab = crc64Table(); } $crc = 0; for ($i = 0; $i < strlen($string); $i++) { $crc = $crc64tab[($crc ^ ord($string[$i])) & 0xff] ^ (($crc >> 8) & ~(0xff << 56)); } return sprintf($format, $crc); } //随机字符串+crc64方法 function gen_order_randchar() { $strChar = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm"; $strRandChar = substr(str_shuffle($strChar), mt_rand(0, strlen($strChar) - 11), 16); $strRandChar = crc64($strRandChar, "%u"); return $strRandChar; } var_dump(gen_order_randchar()); 运行结果: string(20) "15531636943001169826"
5、Twitter SnowFlake算法方法composer require youthage/snowflake require_once "vendor/autoload.php"; use YsnowflakeSnowflake; function gen_order_snowflake() { $objSnowflake = new Snowflake(); return $objSnowflake->nextId(); } var_dump(gen_order_snowflake()); 运行结果: int(434087018926964736)
感谢大家评论、点赞、分享…
Mac和Win双管齐下!KeychronK8键盘上手体验作为一个MacOS和Win双修的用户,经常会有朋友来问我有没有推荐的键盘能够在两个系统之间灵活使用。我一般都会给大家推荐Keychron的键盘,这也是很多苹果用户的心头好,下面我就
文艺青年的键盘新选择米物ART机械键盘我身边有很多文艺青年,他们喜欢DIY喜欢高颜值的产品,尤其是我的室友,他是个键盘爱好者,入手过不下50多把键盘,经常自己折腾,最近有入手了一把米物ART机械键盘。于是趁着首发,我就
Win10开机默认开启数字小键盘技术分享Win10现在有越来越多用户使用了,可是每开机,那个键盘上的数字小键盘都是默认关闭的,每次都要手动开启一次,这样麻烦了。现在我分享一个开机即开启数字键的小技巧1电脑启动后,用鼠标右
打开WIN系统任务管理器的方法和快捷键WIN系统的任务管理器,可以查看或者管理系统的性能信息应用进程查看CPU内存硬盘和网络等使用情况,还可以禁用自启动软件,管理系统服等。在WIN系统怎么打开任务管理器,下面介绍几个方
年度最红的键盘达尔优A84竟然这么高调达尔优的A系列相信大家已经比较熟悉,今年达尔优发布了具有代表性的A87紫金轴天空轴系列机械键盘,在外观和手感方面实现了高销量。最近,大友再次继续其个性化定制路线,推出了中国红渐变色
窄边框是亮点,性能更出色!飞行堡垒6上手评测飞行堡垒6游戏本搭载intel第8代酷睿高性能CPU和NVIDIAGTX独立显卡,同时采用了时下流行的窄边框屏幕,让颜值进一步提升。飞行堡垒6中间的数字6是六代的意思,外观上延续五
GoPro10最佳拍档!TelesinVLOG蓝牙遥控自拍杆体验自拍热潮正席卷全球每一个角落,越来越多人喜欢用相机记录生活,好友聚会拍照留念,各类美食拍照留念,出门游玩当然也要拍照打卡,而万众期待的国庆小长假已经来临,相信很多人都已经做好了出游
远程办公,你真的了解吗?远程办公的英文是Telecommuting或者Telework,这个名词于1973年诞生在美国,它通过互联网或者电话联系工作伙伴。这种工作方式,能让雇员享有灵活的工作时间和地点,并
新SwitchOLED屏幕揭秘为什么OLED有不同的排列?SwitchOLED上市半个月了,也有很多小伙伴已经入手了这款机器。总体来说,SwitchOLED相比原版续航版主机的提升幅度超出了大部分玩家的预期,比如音质更高的扬声器变得实用的
轻巧耐用山灵UA1Pro便携解码器体验前言近年来,便携蓝牙解码耳放应该能算得上是音频产品界的一个风口,对音乐发烧友来说,耳放是非常有用的一个装置,它不仅起到了放大功率的作用,还能用于调音,能够使耳机所表现出来的音乐细节
云网融合为啥这么火?云网融合,是当下电信业最热门的话题之一,也是全球领先运营商正积极推进的发展战略,比如,中国电信早在2016年就开启了云网融合的数字化转型之路,又在去年11月发布了云网融合2030白