加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php生成固定长度纯数字编码的方法

发布时间:2020-12-12 20:59:53 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解php生成固定长度纯数字编码的方法。供大家参考研究。具体如下: 很多时候我们需要一些固定长度的数字编码,如订单编号、卡号、用户编号等等!但是经常我们有的是存储在数据库中的有序编号,我们可以通过它直接转成一个固定长度的数字编

本篇章节讲解php生成固定长度纯数字编码的方法。分享给大家供大家参考。具体如下:

很多时候我们需要一些固定长度的数字编码,如订单编号、卡号、用户编号等等!但是经常我们有的是存储在数据库中的有序编号,我们可以通过它直接转成一个固定长度的数字编码,然后更新到数据库中形成此记录的唯一编号。

array( 10,2,11,3,1,9,7,12,6,4,8,5,),5=>array( 4,13,15,10,14,6=>array( 2,16,18,17,7=>array( 18,22,19,20,21,8=>array( 11,24,25,23,9=>array( 24,27,28,26,10=>array( 32,30,31,29,11=>array( 9,32,33,34,35,12=>array( 31,37,36,38,); return $mapBits[intval($width)]; } /** * 格式化给定时间戳 * * @param integer $ts timestamp,if null use current timestamp * * @return string */ private static function _fmtTS($ts=null) { $ts = $ts ?: time(); return date(self::$_fmt,$ts); } /** * 根据id获取一个随机唯一编码 * @param $id 编号 * @param int $prefix 前缀 * @param int $width 除前缀外长度 * @return string */ public static function generateNumber($id,$prefix=10,$width=8) { return sprintf("%s%s",$prefix,self::encode($id,$width)); } /** * 编码转换 * * @param integer $id id * @param integer $width 编号额外组成部分的显示宽度 * * @return integer */ public static function encode($id,$width) { $maximum = intval(str_repeat(9,$width)); $superscript = intval(log($maximum) / log(2)); $r = 0; $sign = 0x1 << $superscript; $id |= $sign; $mapbit = self::_getMapbit($width); for ($x = 0; $x < $superscript; $x++) { $v = ($id >> $x) & 0x1; $r |= ($v << $mapbit[$x]); } $r += $maximum - pow(2,$superscript) + 1; return sprintf("%0${width}s",$r); } /** * 获取唯一编号 * * @param integer $id id,mostly database primary key * @param integer $width 编号显示宽度 * @param integer $ts timestamp * * @return string */ public static function get($id,$width,$ts=null) { return sprintf('%s%s',self::_fmtTS($ts),$width)); } }

希望本文所述对大家的php程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读