php 根據(jù)自增id創(chuàng)建唯一編號(hào)類
在開(kāi)發(fā)過(guò)程中,我們數(shù)據(jù)表一般都使用自增數(shù)字作為id主鍵,而id是數(shù)字型,不容易理解。我們把id按一定格式轉(zhuǎn)為編號(hào)后,很容易根據(jù)編號(hào)知道代表的是什么內(nèi)容。
例如訂單表id=20160111197681234,只看id我們并不知道這個(gè)id是訂單表的id,而轉(zhuǎn)為編號(hào)O-20160111197681234,則很容易看出是訂單表的記錄,然后可以根據(jù)id在訂單表中搜尋。
編號(hào)創(chuàng)建的規(guī)則
1.唯一
使用自增id生成,保證唯一性
2.盡可能短
可使用數(shù)字求余對(duì)應(yīng)字母的方式處理,創(chuàng)建較短的編號(hào)
算法原理
1.加自定義前綴,用于標(biāo)識(shí)
2.格式使用前綴+字母+數(shù)字組成,數(shù)字只保留N位,超過(guò)的使用數(shù)字求余的方式使用字母對(duì)應(yīng)
例如:
id=1
前綴=F
數(shù)字保留3位
則創(chuàng)建的編號(hào)為:F-A-001
代碼如下:
IDCode.class.PHP
<?php
/**
* php 根據(jù)自增id創(chuàng)建唯一編號(hào)類
* Date: 2016-11-27
* Author: fdipzone
* Ver: 1.0
*
* Func
* Public create 創(chuàng)建編號(hào)
*/
class IDCode{ // class start
/**
* 創(chuàng)建編號(hào)
* @param Int $id 自增id
* @param Int $num_length 數(shù)字最大位數(shù)
* @param String $prefix 前綴
* @return String
*/
public static function create($id, $num_length, $prefix){
// 基數(shù)
$base = pow(10, $num_length);
// 生成字母部分
$division = (int)($id/$base);
$word = '';
while($division){
$tmp = fmod($division, 26); // 只使用26個(gè)大寫(xiě)字母
$tmp = chr($tmp + 65); // 轉(zhuǎn)為字母
$word .= $tmp;
$division = floor($division/26);
}
if($word==''){
$word = chr(65);
}
// 生成數(shù)字部分
$mod = $id % $base;
$digital = str_pad($mod, $num_length, 0, STR_PAD_LEFT);
$code = sprintf('%s-%s-%s', $prefix, $word, $digital);
return $code;
}
} // class end
?>
demo.php
<?php
require 'IDCode.class.php';
$test_ids = array(1,9,10,99,100,999,1000,1009,2099,3999,9999,14999,99999);
foreach($test_ids as $test_id){
echo $test_id.' = '.IDCode::create($test_id, 3, 'F').'<br>';
}
?>
輸出:
1 = F-A-001 9 = F-A-009 10 = F-A-010 99 = F-A-099 100 = F-A-100 999 = F-A-999 1000 = F-B-000 1009 = F-B-009 2099 = F-C-099 3999 = F-D-999 9999 = F-J-999 14999 = F-O-999 99999 = F-VD-999
源碼下載地址:點(diǎn)擊查看
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
rephactor 優(yōu)秀的PHP的重構(gòu)工具
從PHP5開(kāi)始,提供了強(qiáng)大的面向?qū)ο蠊δ?。使得PHP能夠完全按設(shè)計(jì)模式編程。2011-06-06
php簡(jiǎn)單圖像創(chuàng)建入門(mén)實(shí)例
這篇文章主要介紹了php簡(jiǎn)單圖像創(chuàng)建方法,實(shí)例分析了php圖像創(chuàng)建的基本技巧,需要的朋友可以參考下2015-06-06
php實(shí)現(xiàn)Linux服務(wù)器木馬排查及加固功能
這篇文章主要介紹了php實(shí)現(xiàn)Linux服務(wù)器木馬排查及加固功能,本文給出了根據(jù)特征碼查找、搜索最近被修改的文件、修改php.ini、修改nginx.conf等方法,需要的朋友可以參考下2014-12-12

