php 根据自增id创建唯一编号类
发布时间 - 2026-01-11 00:32:34 点击率:次在开发过程中,我们数据表一般都使用自增数字作为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);
// 生成字母部分
$division = (int)($id/$base);
$word = '';
while($division){
$tmp = fmod($division, 26); // 只使用26个大写字母
$tmp = chr($tmp + 65); // 转为字母
$word .= $tmp;
$division = floor($division/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
<?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
源码下载地址:点击查看
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# php
# 生成唯一编号
# php生成唯一数字编号
# 编号自增生成
# php 无限级分类 获取顶级分类ID
# php GUID生成函数和类
# php获取淘宝分类id示例
# php生成随机数的三种方法
# php使用array_rand()函数从数组中随机选择一个或多个元素
# PHP生成不重复随机数的方法汇总
# PHP n个不重复的随机数生成代码
# PHP实现的生成唯一RequestID类完整示例
# 很容易
# 的是
# 下载地址
# 不容易
# 点击查看
# 自定义
# 只看
# 可以根据
# 较短
# 过程中
# 主键
# 表一
# brush
# lt
# Date
# IDCode
# class
# pre
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
如何做网站制作流程,*游戏网站怎么搭建?
微信小程序 require机制详解及实例代码
高端企业智能建站程序:SEO优化与响应式模板定制开发
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
如何在云虚拟主机上快速搭建个人网站?
Python文本处理实践_日志清洗解析【指导】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何在橙子建站上传落地页?操作指南详解
智能起名网站制作软件有哪些,制作logo的软件?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Laravel观察者模式如何使用_Laravel Model Observer配置
JavaScript如何实现错误处理_try...catch如何捕获异常?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
JavaScript如何实现继承_有哪些常用方法
昵图网官方站入口 昵图网素材图库官网入口
晋江文学城电脑版官网 晋江文学城网页版直接进入
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Python高阶函数应用_函数作为参数说明【指导】
Laravel如何记录自定义日志?(Log频道配置)
如何续费美橙建站之星域名及服务?
Laravel怎么在Controller之外的地方验证数据
Python函数文档自动校验_规范解析【教程】
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
JavaScript中的标签模板是什么_它如何扩展字符串功能
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
如何在阿里云部署织梦网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
轻松掌握MySQL函数中的last_insert_id()
HTML 中如何正确使用模板变量为元素的 name 属性赋值
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何用y主机助手快速搭建网站?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel如何实现数据库事务?(DB Facade示例)
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
如何快速搭建二级域名独立网站?

