php 根據自增id建立唯一編號類

2021-07-25 06:01:07 字數 1397 閱讀 3737



在開發過程中,我們資料表一般都使用自增數字作為id主鍵,而id是數字型,不容易理解。我們把id按一定格式轉為編號後,很容易根據編號知道代表的是什麼內容。

例如訂單表id=20160111197681234,只看id我們並不知道這個id是訂單表的id,而轉為編號o-20160111197681234,則很容易看出是訂單表的記錄,然後可以根據id在訂單表中搜尋。

編號建立的規則

1.唯一

使用自增id生成,保證唯一性

2.盡可能短

可使用數字求餘對應字母的方式處理,建立較短的編號

演算法原理

1.加自定義字首,用於標識

2.格式使用字首+字母+數字組成,數字只保留n位,超過的使用數字求餘的方式使用字母對應

例如:

id=1

字首=f

數字保留3位

則建立的編號為:f-a-001

**如下:

idcode.class.php

<?php

/*** php 根據自增id建立唯一編號類

* date: 2016-11-27

* author: fdipzone

* ver: 1.0

** func

* public create 建立編號

*/class idcode

if($word=='')

// 生成數字部分

$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)

?>

輸出: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

php 根據自增id建立唯一編號類

在開發過程中,我們資料表一般都使用自增數字作為id主鍵,而id是數字型,不容易理解。我們把id按一定格式轉為編號後,很容易根據編號知道代表的是程式設計客棧什麼內容。例如訂單表id 20160111197681234,只看id我們並不知道這個id是訂單表的id,而轉為編號o 2016011119768...

分布式唯一ID自增(雪花演算法)

public class idworker if datacenterid maxdatacenterid datacenterid 0 this.workerid workerid this.datacenterid datacenterid methods 獲得下乙個id 該方法是執行緒安全的 ...

Spark中便捷生成全域性唯一自增ID

利用spark rdd api所提供的的zipwithindex 和 zipwithuniqueid 生成id,兩者的區別如下。zipwithindex 首先基於分割槽索引排序,然後是每個分割槽中的項的排序。所以第乙個分割槽中的第一項得到索引0,第二個分割槽的起始值是第乙個分割槽的最大值。從0開始。...