如何自动生成订单号(常用生成订单号的规则)

订单号就是您在购物网站购物后获得的订单号,记录的是购物订单信息在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号【来自百度百科】,现在小编就来说说关于如何自动生成订单号?下面内容希望能帮助到你,我们来一起看看吧!

如何自动生成订单号(常用生成订单号的规则)

如何自动生成订单号

订单号就是您在购物网站购物后获得的订单号,记录的是购物订单信息。在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号。【来自百度百科】

软件开发中我们经常会遇到生成订单号的业务逻辑来记录用户下单、物流、发票、支付、结算等信息。生成订单号的方式多种多样。大部分会参考业务需求来设计生成方式,但订单号的生成规则大同小异相差不大。下面给大家总结介绍几种订单号的生成规则以供参考。

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 Ysnowflake\Snowflake; function gen_order_snowflake() { $objSnowflake = new Snowflake(); return $objSnowflake->nextId(); } var_dump(gen_order_snowflake()); 运行结果: int(434087018926964736)

感谢大家评论、点赞、分享。。。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页