php ID前缀格式化类

2023-05-16

数据库表通常都会有一个字段类型为int,命名为id的自增主键。

优点:使用int类型可自增,且比字符类型节省存储空间。
缺点:id是数值型,当要查询一个id对应的数据时,很难根据id判断是哪一个数据表。

因此我们在存储时,应使用int,而在显示时对id进行一些处理,使很容易分辨这个id属于哪一个表。


编写了下面这个类,实现对id增加前缀及对已加前缀的id还原。

Prefix.class.php

<?php
/**
 * ID前缀格式化类
 * Date:    2016-10-27
 * Author:  fdipzone
 * Ver:     1.0
 *
 * Func
 * public getPrefixId    生成已加前缀的id
 * public getId          还原为id
 * public getPrefixType  根据已加前缀id获取前缀类型
 */
class Prefix{ // class start

    // 定义前缀常量
    const USER_TYPE = 'user';       // 用户
    const ORDER_TYPE = 'order';     // 订单
    const MESSAGE_TYPE = 'message'; // 消息

    // 前缀设定
    private static $prefix = array(
        self::USER_TYPE => 'U',
        self::ORDER_TYPE => 'O',
        self::MESSAGE_TYPE => 'M'
    );

    /**
     * 创建带前缀的id
     * @param  Int     $id          id
     * @param  Int     $prefix_type 类型
     * @return String
     */
    public static function getPrefixId($id, $prefix_type=''){
        // 有自定义前缀类型
        if(isset(self::$prefix[$prefix_type])){
            return self::$prefix[$prefix_type].$id;
        }

        // 没有自定义前缀类型
        return $id;
    }

    /**
     * 还原为id
     * @param  String $prefix_id 已加前缀id 
     * @return Int
     */
    public static function getId($prefix_id){
        preg_match('/\d+/', $prefix_id, $arr);
        if(isset($arr[0])){
            return $arr[0];
        }
        return 0;
    }

    /**
     * 根据已加前缀id获取前缀类型
     * @param  String $prefix_id 已加前缀id 
     * @return Int
     */
    public static function getPrefixType($prefix_id){

        // 获取id前缀
        preg_match('/[A-Za-z]+/', $prefix_id, $arr);

        if(isset($arr[0])){
            $prefix = $arr[0];

            // 获取前缀
            $prefixs = array_flip(self::$prefix);
            if(isset($prefixs[$prefix])){
                return $prefixs[$prefix];
            }
        }

        return '';
    }

} // class end

?>

demo.php

<?php
require 'Prefix.class.php';

// 原始id
$user_id = 1001;
$order_id = 2016102743765214;
$message_id = 109283;

echo '<pre>';

// 已加前缀id
echo '1.id加前缀'.PHP_EOL;
$prefix_user_id = Prefix::getPrefixId($user_id, Prefix::USER_TYPE);
$prefix_order_id = Prefix::getPrefixId($order_id, Prefix::ORDER_TYPE);
$prefix_message_id = Prefix::getPRefixId($message_id, Prefix::MESSAGE_TYPE);

echo $prefix_user_id.PHP_EOL;
echo $prefix_order_id.PHP_EOL;
echo $prefix_message_id.PHP_EOL.PHP_EOL;

// 前缀类型
echo '2.根据已加前缀id获取前缀类型'.PHP_EOL;
echo Prefix::getPrefixType($prefix_user_id).PHP_EOL;
echo Prefix::getPrefixType($prefix_order_id).PHP_EOL;
echo Prefix::getPrefixType($prefix_message_id).PHP_EOL.PHP_EOL;

// 还原为原始id
echo '3.还原为原始id'.PHP_EOL;
echo Prefix::getId($prefix_user_id).PHP_EOL;
echo Prefix::getId($prefix_order_id).PHP_EOL;
echo Prefix::getId($prefix_message_id).PHP_EOL.PHP_EOL;

echo '</pre>';
?>

输出:

1.id加前缀
U1001
O2016102743765214
M109283

2.根据已加前缀id获取前缀类型
user
order
message

3.还原为原始id
1001
2016102743765214
109283

自定义的前缀常量,可以根据需求自行创建。


源码下载地址:点击查看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php ID前缀格式化类 的相关文章

  • 使用ssh-keygen生成私钥和公钥

    1 使用ssh keygen生成私钥和公钥 命令如下 xff1a ssh span class hljs attribute keygen span span class hljs attribute t span rsa 例子 xff1a
  • 代码简短且隐蔽的后门木马

    本文将介绍一个代码很简短 xff0c 而且很隐蔽的后门木马 xff0c 以便让大家在检测程序时可以避免被挂木马 文件内容如下 xff1a lt php 64 span class hljs variable span 61 span cla
  • H264视频编码原理基础分析

    引言 本文章旨在记录本人学习有关音视频时对H264码流视频编解码原理部分的内容 xff0c 如有不对请留言指出 1 音视频封装格式 我们一般下载或者播放的视频文件常见都是以 xxx mp4 xxx flv xxx mkv等标识结尾 xff0
  • mysql导出查询结果到csv方法

    要将mysql的查询结果导出为csv xff0c 一般会使用php连接mysql执行查询 xff0c 将返回的查询结果使用php生成csv格式再导出 但这样比较麻烦 xff0c 需要服务器安装php才可以实现 直接使用mysql导出csv方
  • MySQL实用工具汇总

    本文收录了mysql相关的实用工具 工具包括 xff1a 性能测试 xff0c 状态分析 xff0c SQL路由 xff0c 及运维开发相关的所有工具 xff0c 并会持续更新 1 工具套件集 percona toolkit oak too
  • php 判断memcache key/value是否存在方法

    1 memcache简介 memcache是一套分布式高速缓存软件 xff0c 用于数据缓存及分布式网站session存储等 使用key 61 gt value方式存储 xff0c 支持数据压缩存储处理及数据过期处理 value只支持str
  • mysql 使用inet_aton和inet_ntoa处理ip地址数据

    本文将介绍如何在数据库中使用合适格式保存ip地址数据 xff0c 并能方便的对ip地址进行比较的方法 1 保存ip地址到数据库 数据库中保存ip地址 xff0c 字段一般会定义为 xff1a span class hljs escape 9
  • git commit 提交注释规范

    本文将介绍使用git commit时的注释规范 xff0c 提高commit内容的可读性及理解 规范说明 xff1a 1 用一空行分隔标题与正文 2 标题使用大写字母 3 标题不超过50个字符 4 标题使用祈使语气 5 标题不要使用句号结尾
  • html5实现摇一摇功能

    原理 xff1a 使用DeviceMotion实现 xff0c 关于DeviceMotion介绍可以查看 https developer mozilla org en US docs Web Reference Events devicem
  • MySql查看与修改auto_increment方法

    本文将介绍如何查看表的auto increment及其修改方法 查看表当前auto increment 表的基本数据是存放在mysql的information schema库的tables表中 xff0c 我们可以使用sql查出 span
  • js遍历获取表格内数据方法

    本文将介绍如何使用js获取表格内某一单元格的内容 xff0c 表格由table tr td等html标记组成 table表示表格 xff0c tr表示行 xff0c td表示行中列 1 一般的表格结构如下 span class hljs t
  • JS生成二维码(兼容各种浏览器及中文)

    本文将介绍如何使用JS生成二维码 xff0c 兼容各种浏览器及手机端 xff0c 支持中文 代码如下 xff1a span class hljs doctype lt DOCTYPE html gt span span class hljs
  • mysql 严格模式 Strict Mode说明

    1 开启与关闭Strict Mode方法 找到mysql安装目录下的my cnf xff08 windows系统则是my ini 文件 在sql mode中加入STRICT TRANS TABLES则表示开启严格模式 xff0c 如没有加入
  • C++产生随机数

    随机数 计算机的随机数都是由伪随机数 xff0c 即是由小M多项式序列生成的 xff0c 其中产生每个小序列都有一个初始值 xff0c 即随机种子 xff08 注意 xff1a 小M多项式序列的周期是65535 xff0c 即每次利用一个随
  • git 误删分支恢复方法

    在使用git的过程中 xff0c 因为人为因素造成分支 xff08 commit 被删除 xff0c 可以使用以下步骤进行恢复 首先用以下步骤创建一个新分支 xff0c 修改一些文件后删除 xff0c 以便进行恢复 1 创建分支 abc g
  • 软件工程师的鄙视链

    最近这几年在世界各地突然吹起了一股全民写程序的风潮 xff0c 但是身为一介靠写程序 xff08 以及在上班时间胡乱上网 xff09 来谋生的 developer xff08 所谓的 developer 就是 软件工程师 的比较潮的说法 x
  • mac使用brew安装软件失败的通用解决方法

    使用mac的brew安装软件 xff0c 有时会出现安装失败 xff0c 或显示安装成功 xff0c 但不能正常使用的情况 例如安装php56 redis扩展 xff0c 显示安装成功 xff0c 重启后查看phpinfo看不到redis扩
  • node.JS md5加密中文与php结果不一致的解决方法

    因项目需要 xff0c 需要node JS与php做接口调用 xff0c 发现node JS对中文使用md5加密与php对中文md5加密的结果不同 PHP span class php span class hljs preprocesso
  • mysql互换表中两列数据方法

    1 创建表及记录用于测试 span class hljs operator span class hljs keyword CREATE span span class hljs keyword TABLE span span class
  • mysql 时间戳格式化函数from_unixtime使用说明

    我们一般使用字段类型int 11 时间戳来保存时间 xff0c 这样方便查询时提高效率 但这样有个缺点 xff0c 显示的时间戳 xff0c 很难知道真实日期时间 mysql提供了一个时间戳格式化函数from unixtime来转换格式 f

随机推荐

  • mysql函数concat与group_concat使用说明

    1 concat 函数 使用方法 xff1a concat str1 str2 返回的结果为连接参数产生的字符串 xff0c 如有任何一个参数为null xff0c 则返回值为null 注意 xff1a 如果所有参数均为非二进制字符串 xf
  • mysql innodb启动失败无法重启的处理方法

    电脑在使用过程中死机 xff0c 重启后发现mysql没有启动成功 xff0c 查看错误日志发现是innodb出现问题导致mysql启动失败 错误日志 mysql server start Starting MySQL ERROR The
  • mac环境使用sed修改文件出错的解决方法

    sed是linux命令 xff0c 用于处理文件内容 xff08 修改 xff0c 替换等 xff09 xff0c mac中都可以使用 xff0c 但发现相同的替换命令在linux可以正常执行 xff0c 在mac则执行失败 出错原因 用s
  • mysql order by rand() 效率优化方法

    从一次查询中随机返回一条数据 xff0c 一般使用mysql的order by rand 方法来实现 例如 从20万用户中随机抽取1个用户 span class hljs header mysql gt select from user o
  • 汇编语言:使用冒泡排序算法将10个数按从小到大顺序排列

    汇编语言 xff1a 冒泡排序算法 题目描述 自定义一组有首地址为data的10个字的数组 xff0c 请利用冒泡排序算法来编写程序 xff0c 使该数组中的数按照从小到大的次序有序化 xff08 注 xff1a 10个字可以自己定义 xf
  • 今天终于弄懂结构体数组与结构体变量的关系

    本人也是学计算机专业的 xff0c 但我是一个技术小白 xff0c 今年大一刚刚入学 xff0c 现在在过寒假 xff0c 因为我的C语言成绩并不太好 xff0c 父母总是为我感到担忧 xff0c 因此 xff0c 我每天都在敲代码 xff
  • MongoDB 导出导入备份恢复数据实例

    创建测试数据 创建db testdb collection user 插入10条记录 mongo MongoDB shell span class hljs property version span span class hljs num
  • crontab 使用日期时间命名重定向文件

    linux crontab命令可以实现定时执行任务 xff0c 最小的执行周期是1分钟 关于crontab的使用可以查看 Linux crontab定时执行任务 命令格式与详细例子 例 xff1a 每天12点执行test php xff0c
  • php 使用redis锁限制并发访问类

    1 并发访问限制问题 对于一些需要限制同一个用户并发访问的场景 xff0c 如果用户并发请求多次 xff0c 而服务器处理没有加锁限制 xff0c 用户则可以多次请求成功 例如换领优惠券 xff0c 如果用户同一时间并发提交换领码 xff0
  • mysql导入大批量数据出现MySQL server has gone away的解决方法

    因工作需要 xff0c 需要导入一个200M左右的sql到user库 执行命令 mysql gt use user Database changed mysql gt span class hljs built in source span
  • mysql 搜寻附近N公里内数据的实例

    根据圆周率和地球半径系数以及搜寻点的经纬度 xff0c 搜寻数据表中与搜寻点之间的距离为N公里内的数据 1 创建测试表 span class hljs operator span class hljs keyword CREATE span
  • crontab 精确到执行分钟内某一秒执行的方法

    linux crontab命令可以实现定时执行任务 xff0c 最小的执行周期是1分钟 关于crontab的使用可以查看 Linux crontab定时执行任务 命令格式与详细例子 执行指定命令默认是当前执行分钟的第0 1秒开始 例如 xf
  • mongodb 随机获取一条记录的方法

    原理 xff1a 1 先查询表中的记录总数 2 随机获取偏移量为0 总记录数 1 3 查询时skip偏移量 xff0c 再获取1条记录 因本人测试环境php已升级到7 0以上 xff0c mongodb扩展使用支持php7 0以上的扩展 x
  • mysql 连接闪断自动重连的方法

    使用php作为后台运行程序 xff08 例如短信群发 xff09 xff0c 在cli模式下执行php xff0c php需要连接mysql循环执行数据库处理 当mysql连接闪断时 xff0c 之后循环的执行将会失败 我们需要设计一个方法
  • mongodb 判断坐标是否在指定多边形区域内的方法

    MongoDB是一个基于分布式文件存储的数据库 xff0c 并提供创建基于地理空间的索引的能力 xff0c 本文将使用MongoDB 基于地理空间索引进行坐标所在区域的判断及使用 1 使用百度拾取坐标工具 xff0c 在地图上定义多边形的坐
  • php 实现HTML实体编号与非ASCII字符串相互转换类

    HTML实体符号被用作实现保留字符 xff08 reserved characters xff09 或者表达键盘无法输入的一些常用字符 在大多数浏览器中默认的字符集为ISO 8859 1 HTML实体符号我们在网页设计中经常用到 例如 xf
  • 阿里云RAM账户日常问题总结

    什么是RAM RAM Resource Access Management 是阿里云为客户提供的用户身份管理与访问控制服务 使用RAM xff0c 您可以创建 管理用户账号 xff08 比如员工 系统或应用程序 xff09 xff0c 并可
  • mysql 出现You can't specify target table for update in FROM clause错误的解决方法

    mysql出现You can t specify target table for update in FROM clause 这个错误的意思是不能在同一个sql语句中 xff0c 先select同一个表的某些值 xff0c 然后再upda
  • php结合mongodb判断坐标是否在指定多边形区域内的实例

    之前写过一篇 mongodb 判断坐标是否在指定多边形区域内的方法 是基于mongodb实现 xff0c 所有操作都是在mongodb执行 这次提供使用php连接mongodb xff0c 判断坐标是否在指定多边形区域内的实例 1 定义多边
  • php ID前缀格式化类

    数据库表通常都会有一个字段类型为int 命名为id的自增主键 优点 xff1a 使用int类型可自增 xff0c 且比字符类型节省存储空间 缺点 xff1a id是数值型 xff0c 当要查询一个id对应的数据时 xff0c 很难根据id判