前陣子,公司有個電子商務專案,需要生成訂單號。當時的考慮很簡單,取系統時間加上隨機數,或者使用 uniqid() 方法。我們都知道,訂單號最基本的要求就是唯一,這個條件必須滿足。仔細考慮下上述方法,在顧客購買量少的情況下,訂單重複的可能性為零,但是在購買高蜂期生成的訂單號重複是很有可能發生的。所以上述方法不可靠,有待強化。
在網上找了一番,發現這位同學的想法挺不錯的,redtamo,具體的請穩步過去看看,我作簡要概述,該方法用上了英文本母、年月日、unix 時間戳和微秒數、隨機數,重複的可能性大大降低,還是很不錯的。使用字母很有代表性,乙個字母對應乙個年份,總共16位,不多也不少,呵呵。
<?
php
$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));?>
生成效果:
a422694333616096
唉,不過很可惜,最後專案並沒有使用這種方法,說是沒必要搞這麼複雜, - -!
話說,不想爭執,不用也沒關係,我就寫個筆記,以後備用。
php訂單號的生成
來自ecshop訂單號生成函式 includes lib order.php檔案中的get order sn 得到新訂單號 return string function build order no 原訂單號格式為年月日 5位隨機數,例如 2012022112345。如果你想改變訂單號的生成規則,可...
訂單號生成
之前用uuid 因為太長改用16位因此在網上找到一下這種做法,年月日擷取 時間戳 在加隨機數 生成乙個訂單 獲取年份 var date j f c d e b h i a date gettime tostring var ordersn date new date getfullyear 2015...
php訂單號遞增,PHP生成訂單號的兩種方法
在開發專案的時候經常有生成訂單號的需求,這裡列出兩種生成20位訂單號的常用方法。方法一 以下 是14位當前時間加6位隨機數,如果增減位數,只需修改末尾的數字6即可。function build order no return date ymdhis substr implode null,array...