首页 » PHP教程 » php生成编号技巧_php经由进程php 中的自增id来创建独一编号类

php生成编号技巧_php经由进程php 中的自增id来创建独一编号类

访客 2024-10-28 0

扫一扫用手机浏览

文章目录 [+]

例如订单表id=20160111197681234,只看id我们并不知道这个id是订单表的id,而转为编号O-20160111197681234,则很随意马虎看出是订单表的记录,然后可以根据id在订单表中征采。

编号创建的规则

php生成编号技巧_php经由进程php 中的自增id来创建独一编号类

1.唯一

php生成编号技巧_php经由进程php 中的自增id来创建独一编号类
(图片来自网络侵删)

利用自增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{ // class start

/

创建编号

@param Int $id 自增id

@param Int $num_length 数字最大位数

@param String $prefix 前缀

@return String

/

public static function create($id, $num_length, $prefix){

// 基数

$base = pow(10, $num_length); // 天生字母部分

$pision = (int)($id/$base); $word = ''; while($pision){ $tmp = fmod($pision, 26); // 只利用26个大写字母

$tmp = chr($tmp + 65); // 转为字母

$word .= $tmp; $pision = floor($pision/26);

} if($word==''){ $word = chr(65);

} // 天生数字部分

$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

<?phprequire '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-0019 = F-A-00910 = F-A-01099 = F-A-099100 = F-A-100999 = F-A-9991000 = F-B-0001009 = F-B-0092099 = F-C-0993999 = F-D-9999999 = F-J-99914999 = F-O-99999999 = F-VD-999

在开拓过程中,我们数据表一样平常都利用自增数字作为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{ // class start

/

创建编号

@param Int $id 自增id

@param Int $num_length 数字最大位数

@param String $prefix 前缀

@return String

/

public static function create($id, $num_length, $prefix){

// 基数

$base = pow(10, $num_length); // 天生字母部分

$pision = (int)($id/$base); $word = ''; while($pision){ $tmp = fmod($pision, 26); // 只利用26个大写字母

$tmp = chr($tmp + 65); // 转为字母

$word .= $tmp; $pision = floor($pision/26);

} if($word==''){ $word = chr(65);

} // 天生数字部分

$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

<?phprequire '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-0019 = F-A-00910 = F-A-01099 = F-A-099100 = F-A-100999 = F-A-9991000 = F-B-0001009 = F-B-0092099 = F-C-0993999 = F-D-9999999 = F-J-99914999 = F-O-99999999 = F-VD-999

本文讲解了通过php 中的自增id来创建唯一编号类

标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读0 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读0 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读0 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读0 评论0