如何自動生成訂單号?訂單号就是您在購物網站購物後獲得的訂單号,記錄的是購物訂單信息在您需要與購物網站進行訂單查詢等操作時,需要給購物網站提供商家訂單号【來自百度百科】,現在小編就來說說關于如何自動生成訂單号?下面内容希望能幫助到你,我們來一起看看吧!
訂單号就是您在購物網站購物後獲得的訂單号,記錄的是購物訂單信息。在您需要與購物網站進行訂單查詢等操作時,需要給購物網站提供商家訂單号。【來自百度百科】
軟件開發中我們經常會遇到生成訂單号的業務邏輯來記錄用戶下單、物流、發票、支付、結算等信息。生成訂單号的方式多種多樣。大部分會參考業務需求來設計生成方式,但訂單号的生成規則大同小異相差不大。下面給大家總結介紹幾種訂單号的生成規則以供參考。
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)
感謝大家評論、點贊、分享。。。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!