温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-07-12 09:59:20 来源:亿速云 阅读:196 作者:小新 栏目:开发技术

这篇文章主要介绍了php如何根据自增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

感谢你能够认真阅读完这篇文章,希望小编分享的“php如何根据自增id创建唯一编号类”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI