时间:2021-05-26
在开发过程中,我们数据表一般都使用自增数字作为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
<?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源码下载地址:点击查看
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在mysql中,实现id自增的方式是依靠加一个auto_increment标志,而在pgsql中,id自增是通过序列SEQUENCE。创建表时设置自增序列为:C
本文实例讲述了php实现Mongodb自定义方式生成自增ID的方法。分享给大家供大家参考。具体分析如下:复制代码代码如下://首先创建一个自动增长id集合ids
PHP中ID设置自增后不连续的原因分析如下所述:altertabletablenamedropcolumnid;altertabletablenameaddid
SessionPHP的$_SESSION可以存储当前用户数据信息,用户访问WEB网站的时候,PHP会给每个访问的用户创建一个sessionID,该ID是唯一ID
SqlServer在事务中获得自增ID实例代码在sqlserver中插入数据时,如何返回自增的主键ID,方式有很多,这里提供一种。代码如下:USEtempdbg