下面内容希望能帮助到你,我们来一起看看吧!在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号。软件开发中我们经常会遇到生成订单号的业务逻辑来记录用户下单、物流、发票、支付、结算等信息。大部分会参考业务需求来设计生成方式,但订单号的生成规则大同小异相差不大。下面给大家总结介绍几种订单号的生成规则以供参考。

如何自动生成订单号?订单号就是您在购物网站购物后获得的订单号,记录的是购物订单信息在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号【来自百度百科】,现在小编就来说说关于如何自动生成订单号?下面内容希望能帮助到你,我们来一起看看吧!
如何自动生成订单号
订单号就是您在购物网站购物后获得的订单号,记录的是购物订单信息。在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号。【来自百度百科】
软件开发中我们经常会遇到生成订单号的业务逻辑来记录用户下单、物流、发票、支付、结算等信息。生成订单号的方式多种多样。大部分会参考业务需求来设计生成方式,但订单号的生成规则大同小异相差不大。下面给大家总结介绍几种订单号的生成规则以供参考。
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/snowflakerequire_once 'vendor/autoload.php';use Ysnowflake\Snowflake;function gen_order_snowflake() {$objSnowflake = new Snowflake();return $objSnowflake->nextId();}var_dump(gen_order_snowflake());运行结果:int(434087018926964736)
感谢大家评论、点赞、分享。。。
