php生成不重復(fù)訂單號(hào)的方法:1、利用數(shù)據(jù)庫(kù)主鍵值產(chǎn)生一個(gè)自增長(zhǎng)的訂單號(hào);2、實(shí)現(xiàn)“日期 自增長(zhǎng)數(shù)字”的訂單號(hào);3、產(chǎn)生隨機(jī)的訂單號(hào);4、實(shí)現(xiàn)“字母 數(shù)字字符串式”的訂單號(hào)。
推薦:《php視頻教程》
php生成唯一訂單號(hào)的方法匯總
//商品編號(hào)生成(ymdhi)拼接上兌換表生成的id//訂單號(hào)的生成(ymdhi)拼接上訂單表生成的idecho date('ymd') . str_pad(mt_rand(1, 99999), 5, '0', str_pad_left);
訂單號(hào)常見(jiàn)的幾種方式:
1.利用數(shù)據(jù)庫(kù)主鍵值產(chǎn)生一個(gè)自增長(zhǎng)的訂單號(hào)(訂單號(hào)即數(shù)據(jù)表的主鍵)
2.日期 自增長(zhǎng)數(shù)字的訂單號(hào)(比如:2012040110235662)
3.產(chǎn)生隨機(jī)的訂單號(hào)(65865325365966)
4.字母 數(shù)字字符串式,字母有包含特別意義,c02356652
訂單號(hào)設(shè)計(jì)原則: 按需設(shè)計(jì)
用來(lái)檢索訂單詳細(xì)信息的唯一特征碼,可以利用訂單號(hào)檢索到下單日期、產(chǎn)品類(lèi)別、顏色、尺碼(或款式)、倉(cāng)位等信息,訂單號(hào)包含過(guò)多的信息有點(diǎn)“畫(huà)蛇添足”的意味!只要按需設(shè)計(jì)即可!
訂單號(hào)設(shè)計(jì)用戶(hù)體驗(yàn)規(guī)則:
1.訂單號(hào)無(wú)重復(fù)性;
2.如果方便客服的話(huà),最好是“日期 自增數(shù)”樣式的訂單號(hào),客服一看便知道訂單是否在退貨保障期限內(nèi)容;
3.訂單號(hào)長(zhǎng)度盡量保持短(10位以?xún)?nèi)),方便用戶(hù),尤其電話(huà)投訴時(shí),長(zhǎng)的號(hào)碼報(bào)錯(cuò)幾率高,影響客服效率;
4.訂單號(hào)盡量保持?jǐn)?shù)字型(純整數(shù)),在數(shù)據(jù)庫(kù)訂單索引查詢(xún)中,長(zhǎng)整數(shù)字型的數(shù)據(jù)索引與檢索效率,遠(yuǎn)遠(yuǎn)高于文本型,因此盡量避免“字母 數(shù)字字符串式”!
做商城類(lèi)項(xiàng)目經(jīng)常需要生成唯一訂單號(hào),下面來(lái)個(gè)匯總!
方法一:
return date('ymd') . str_pad(mt_rand(1, 99999), 5, '0', str_pad_left);方法二: 正在使用。。。
return date('ymd').substr(implode(null, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);方法三:以前使用。。。
public function make_order($user_id){return mt_rand(10,99). sprintf('0d',time() - 946656000). sprintf('d', (float) microtime() * 1000). sprintf('d', (int) $user_id % 1000);}方法四:
$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('d', rand(0, 99));