php 根据自增id创建唯一编号类

PHP版唯一邀请码生成 使用PHP,通过传入的ID号生成唯一的6位数字母数字的邀请码,并且可以通过邀请码逆向算出邀请人ID 立即下载



在开发过程中,我们数据表一般都使用自增数字作为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


从SC7A20数据手册到代码:一步步搞定加速度值读取与换算(避坑指南) 本文详细解析了SC7A20三轴加速度传感器的数据手册,从寄存器配置到原始数据读取,再到加速度值的换算方法。通过代码示例和避坑指南,帮助开发者准确实现加速度值的读取与换算,适用于嵌入式开发和运动检测应用。 阅读详情

相关推荐

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 391

生成唯一编号的方法

作者:杨裙 本次任务完成时间:2019年2月21日 开发工具与关键技术:Visual Studio 2015 、SQL Server 2014 Management Studio、c#/MVC 一、第一种方法(自动生成编号): 1、在数据库查询出最后一条数据,自动生成有序编号,控制器的代码: 2、页面的代码(用post的方法提交,然后给需要生成的文本框赋值): 3、效果图: 二、第二种方法(获...

qq_44543430的博客 9921

飞腾D2000 BIOS编译避坑指南:PCIE拆分、S3电源与过温保护配置详解

本文详细解析飞腾D2000 BIOS编译中的关键配置技巧,包括PCIE拆分模式优化、S3电源管理适配及过温保护设置。通过实战案例和参数调优建议,帮助开发者规避常见陷阱,充分发挥国产高性能计算平台的硬件潜力。特别针对BIOS编译过程中的隐蔽问题提供解决方案。

weixin_33704234的博客 534

PHP 生成唯一编号

【代码】PHP 生成唯一编号。

weixin_42136237的博客 367

ADC INL&DNL测试方法和实例

本文介绍了一种可操作的ADC INL和DNL的测试方法--直方图法(也称码密度法)。并实际使用该方法测试了两款芯片的ADC INL和DNL

APTCHIP的博客 1万+

231003-四步MacOS-iPadOS设置无线竖屏随航SideCar

新建虚拟屏幕参考文献。

专注机器学习之路 7485

PHP中如何自动编号避免重复

简单且高效,适用于大多数情况。UUID:适用于需要全局唯一标识符的场景,特别是在分布式系统中。唯一约束:适用于需要根据特定业务逻辑生成唯一编号的场景。序列:适用于PostgreSQL等支持序列的数据库。

weixin_36253265的博客 739

数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)

文章目录引述斯皮尔曼相关系数(spearman)定义 引述 经过之前几节的学习,我们了解并掌握了皮尔逊相关系数。在学习中我们发现,皮尔逊相关系数的使用条件相当苛刻:两组变量必须是连续数据、呈现正态分布,且两者间必须成线性关系。如果我们在数学建模中拿到一组数据无法满足以上条件,那么有没有其他的方法去判断两组变量之间的相关性呢?答案是肯定的,它就是斯皮尔曼相关系数(spearman). 斯皮尔曼相关系...

东 6万+

php 代码生成,php 自动生成编号

标签:html代码责任书编号*PHP代码public function create(){if($this->input->server(‘REQUEST_METHOD‘) == ‘GET‘){$data=array();$data = $this->_getGlobalData($data);$data[‘responsecode‘] = $this->dball-&gt...

weixin_39838758的博客 476

【OS】AUTOSAR架构下MCAL Modules软件分区问题分析

AUTOSAR架构下MCAL Modules软件分区问题分析

qq_36056498的博客 939

微信小程序 - 实现仿小红书轮播图组件功能,类似小红书笔记页面图片展示播放效果,微信小程序仿小红书幻灯片轮播支持视频播放、图片预览,自动适应图片或视频大小可左右滑动切换(小程序精美轮播图,丝滑切换)

微信小程序,轮播图组件,微信小程序仿小红书轮播图,小红书轮播图仿造,微信小程序轮播图,微信小程序幻灯片,微信小程序高仿小红书轮播图实现,小程序实现类似小红书一样的轮播图组件,轮播图插件,精致轮播图,精美丝滑流畅切换的轮播图,轮播图组件,小红薯轮播图,关于小红书的小程序不同数量的轮播图,展示不一样的轮播指示点的实现,微信小程序仿小红书图片轮播,开发微信小程序模仿小红书,高仿小红书Banner的指示器,小红书小程序笔记详情轮播图指示点的随图片数量的变化动态变化,微信小程序swiper轮播图,js轮播图,html

✅ 精选推荐文章 6927

php 生成自增id,php 根据自增id创建唯一编号类

在开发过程中,我们数据表一般都使用自增数字作为id主键,而id是数字型,不容易理解。我们把id按一定格式转为编号后,很容易根据编号知道代表的是什么内容。例如订单表id=20160111197681234,只看id我们并不知道这个id是订单表的id,而转为编号O-20160111197681234,则很容易看出是订单表的记录,然后可以根据id在订单表中搜寻。编号创建的规则1.唯一使用自增id生成,保...

weixin_33641391的博客 744

windows一键安装部署wvp-GB28181-pro视频监控平台

我们可以看到redis、mysql、zlm和wvp都正常运行了。该ip需要修改为wvp服务安装的 服务器的IP。默认用户名和密码分别为admin和admin。

zengliguang的专栏 5746

php 自增,php 根据自增id创建唯一编号类

在开发过程中,我们数据表一般都使用自增数字作为id主键,而id是数字型,不容易理解。我们把id按一定格式转为编号后,很容易根据编号知道代表的是什么内容。例如订单表id=20160111197681234,只看id我们并不知道这个id是订单表的id,而转为编号O-20160111197681234,则很容易看出是订单表的记录,然后可以根据id在订单表中搜寻。编号创建的规则1.唯一使用自增id生成,保...

weixin_31967551的博客 153

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

php 变量自增2,php 根据自增id创建唯一编号类

在开发过程中,我们数据表一般都使用自增数字作为id主键,而id是数字型,不容易理解。我们把id按一定格式转为编号后,很容易根据编号知道代表的是什么内容。例如订单表id=20160111197681234,只看id我们并不知道这个id是订单表的id,而转为编号O-20160111197681234,则很容易看出是订单表的记录,然后可以根据id在订单表中搜寻。编号创建的规则1.唯一使用自增id生成,保...

weixin_42186387的博客 567

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

php 自增,通过php 中的自增id来创建唯一编号类

在开发过程中,我们数据表一般都使用自增数字作为id主键,而id是数字型,不容易理解。我们把id按一定格式转为编号后,很容易根据编号知道代表的是什么内容。例如订单表id=20160111197681234,只看id我们并不知道这个id是订单表的id,而转为编号O-20160111197681234,则很容易看出是订单表的记录,然后可以根据id在订单表中搜寻。编号创建的规则1.唯一使用自增id生成,保...

weixin_42512276的博客 403

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

id自动编号 php,php根据数据id自动生成编号的实现方法

php根据数据id自动生成编号的实现方法如下所示:/*编号=年份后两位+月份+id四位数*/$id = $this->student_model->save(0, $data);$sn = date('Y', time());$sn = substr($sn, -2);$sn.= date('m', time());$sn.=sprintf("%04d", $id);【结果预览】例:1...

weixin_42494891的博客 1856

php 生成全局唯一id,全局唯一id生成

/*** 全局唯一id生产类* https://segmentfault.com/a/1190000007769660* 基于Twitter的SnowFlake算法改造* twitter的结构:* 64bit = 1bit为空缺 + 41bit毫秒时间戳 + 10bit机器id + 12bit自增id* 当前结构 **** 最多支持128项业务* 64bit = 1bit空缺 + 7bit业务编号...

weixin_39636253的博客 364

php 如何查看自增编号,PHP结果集怎么实现编号自增?

PHP结果集怎么实现编号自增?关注:151答案:3mip版解决时间 2021-02-06 15:10提问者傃顏莄蒾亾2021-02-05 22:09实现的效果如下编号 姓名1 张三2 李西3 王五这个编号不是数据库的ID,而是结果集输出后的编号。以递增的方...

weixin_35953704的博客 460

雪花算法及运用PHP,雪花算法生成全局唯一ID,参考了下网上雪花算法生成规则,机器ID和序列号自动获取 理论上毫秒可生成 1024*4096个唯一ID

任务要求毫秒生成10000个唯一ID 研究了下twitter/snowflake的算法思想: 参考了下网上雪花算法生成规则,把数据中心和机器编号整合一起,变成10位机器ID, 机器ID和序列号自动获取 理论上毫秒可生成 1024*4096个唯一ID <?php defined('BASEPATH') or exit('No direct script access al...

wqzoo 3323

mysql 并发生成唯一编号_Mysql表中唯一编号的分配机制

最近遇到一个问题:高并发环境下,如何避免MYSQL一张表里的某些列不要重复。方式一:使用Mysql自带的列唯一索引(Unique)可以在声明表的时候就加入这样一个约束(下面是mysql的语法):CREATE TABLE IF NOT EXISTS`test_orderno2` (`id`int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',`name`...

weixin_31966615的博客 1261

雪花算法生成数字id_php使用雪花算法SnowFlake生成全球唯一数字id

基于Twitter的SnowFlake算法的实现,这个算法的好处很简单可以在每秒产生约400W个不同的16位数字ID(10进制)。原理很简单ID由64bit组成其中 第一个bit空缺41bit用于存放毫秒级时间戳10bit用于存放机器id12bit用于存放自增ID除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用到20...

weixin_39969568的博客 638
上一篇: CSS隐藏元素 display visibility opacity的区别
下一篇: HashMap个人理解
Footloose_
博客等级 码龄10年 254粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值