广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php怎么实现不重复编码
  • 227
分享到

php怎么实现不重复编码

php 2020-01-07 05:01:07 227人浏览 绘本
摘要

本文操作环境:windows7系统,PHP7.4版,Dell G3电脑。php怎么实现不重复编码?PHP实现生成唯一编号(36进制的不重复编号):当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订

本文操作环境:windows7系统,PHP7.4版,Dell G3电脑。

php怎么实现不重复编码?

PHP实现生成唯一编号(36进制的不重复编号):

当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订单流水号、短网址等等,我们可以使用36进制计算出符合位数的不重复的编号。

我们将0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分别代表数值0-35,如字母Z代表35。这样的话我要得到一个5位的编号,最大信息量就是36的5次方了,36^5 = 60466176,即最大的5位编号相当于10进制的数字:60466176。

本文中为了做演示,我们假定某俱乐部发放一批10位的会员卡号,会员卡号由3位城市编号+5位卡号编码+2位校验码组成。城市编号用区号表示,如755代表深圳,5位卡编号则由36进制的卡编号组成,后面两位校验码则是通过一定的算法生成的,校验码的用处是可以验证卡号的合法性。这样的话,我们生成的10位卡号相当于最大能满足6000多万会员卡号,并且是不重复唯一的卡号。

PHP实现

我们使用php进行进制转换,10进制转36进制。

class Code { 

    //密码字典 

    private $dic = array( 

        0=>'0',    1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8',     

        9=>'9', 10=>'A',  11=>'B', 12=>'C', 13=>'D', 14=>'E', 15=>'F',  16=>'G',  17=>'H',     

        18=>'I',19=>'J',  20=>'K', 21=>'L',  22=>'M',  23=>'N', 24=>'O', 25=>'P', 26=>'Q',     

    27=>'R',28=>'S',  29=>'T',  30=>'U', 31=>'V',  32=>'W',  33=>'X', 34=>'Y', 35=>'Z' 

    ); 

 

 

    public function encodeID($int, $fORMat=8) { 

        $dics = $this->dic; 

        $dnum = 36; //进制数 
        $arr = array (); 

        $loop = true; 

        while ($loop) { 

            $arr[] = $dics[bcmod($int, $dnum)]; 

            $int = bcp($int, $dnum, 0); 

            if ($int == '0') { 

                $loop = false; 

            } 

        } 

        if (count($arr) < $format) 

            $arr = array_pad($arr, $format, $dics[0]); 

 

        return implode('', array_reverse($arr)); 

    } 

 

    public function decodeID($ids) { 

        $dics = $this->dic; 

        $dnum = 36; //进制数 

        //键值交换 
        $dedic = array_flip($dics); 

        //去零 
        $id = ltrim($ids, $dics[0]); 

        //反转 
        $id = strrev($id); 

        $v = 0; 

        for ($i = 0, $j = strlen($id); $i < $j; $i++) { 

            $v = bcadd(bcmul($dedic[$id { 

                $i } 

            ], bcpow($dnum, $i, 0), 0), $v, 0); 

        } 

        return $v; 

    } 
}

我们定义Code类,先定义密码字典,即0-Z分别对应的数值,方法encodeID($int, $format)中参数$int表示数字,$format表示位数长度,比方encodeID(123456789,5)表示将数字123456789转换成5位的36进制编号,而方法decodeID($ids)用于将36进制的编号转换成10进制的编号。

我们可以这样来生成卡号:

$code = new Code(); 

$card_no = $code->encodeID(888888,5);

如上,我们就可以得到一个5位的卡编号,它实际代表着卡号是888888(6个8)的会员编号,而实际进行转换后是5位编号:0J1VC。接着,我们将城市编号和校验码加上,城市编号是已经定义好的,校验码则通过一定的算法取得,本例中,我们使用简单的算法:将前三位城市编号和五位卡编号进行md5加密,然后取md5值的前2位作为校验码,这样就得到了编号后面的两位校验码。

$card_pre = '755'; 

$card_vc = substr(md5($card_pre.$card_no),0,2); 

$card_vc = strtoupper($card_vc); 

echo $card_pre.$card_no.$card_vc;

实际应用中,可以通过数据库得到10进制的编号,保证编号唯一,再将上述代码组合,最终生成一个10位的不重复的会员卡号。

--结束END--

本文标题: php怎么实现不重复编码

本文链接: https://www.lsjlt.com/news/904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php怎么实现不重复编码
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php怎么实现不重复编码?PHP实现生成唯一编号(36进制的不重复编号):当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订...
    99+
    2020-01-07
    php
  • php如何实现不重复编码
    这篇文章主要讲解了“php如何实现不重复编码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现不重复编码”吧!php实现不重复编码的方法:1、创建一个PHP示例文件;2、使用PHP...
    99+
    2023-06-22
  • php不重复唯一值怎么实现
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php不重复唯一值怎么实现?PHP 生成不重复唯一标识 session_create_id()PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒...
    99+
    2022-11-03
  • php range 不重复随机数怎么实现
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php range 不重复随机数怎么实现?PHP生成不重复随机数的几种方法方法一:<php $numbers = range (1,50); //shuff...
    99+
    2022-10-26
  • php不重复唯一值如何实现
    今天小编给大家分享一下php不重复唯一值如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php实现不重复唯一值的方法:...
    99+
    2023-07-04
  • php怎么实现ucs2编码
    本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。php怎么实现ucs2编码PHP实现UCS2编码解码 手机发送短信时编码代码如下: function Ucs2Code($str,$encode="UTF-8...
    99+
    2014-06-19
    php ucs2编码
  • php怎么生成不重复颜色
    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑php怎么生成不重复颜色?php生成多个随机不重复颜色代码代码如下:<php function randColor($num){ //color value lim...
    99+
    2020-07-21
    php
  • php range不重复随机数如何实现
    这篇文章主要介绍“php range不重复随机数如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php range不重复随机数如何实现”文章能帮助大家解决问题。php range实现不重复随机...
    99+
    2023-07-04
  • php数组合并怎么不去重复
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在PHP中,可以利用array_merge_recursive()函数实现不去重复的合并数组。array_merge_recursive() 函数把一个或多个数组合并为...
    99+
    2017-08-05
    php 数组合并
  • php怎么实现Base64的编码和解码
    Base64算法是一种将二进制数据转换为ASCII字符的编码方式,使得数据可以在传输过程中不被修改或损坏,同时也可以隐藏数据的真实内容。在PHP中,可以利用内置函数或手动编写代码实现Base64的编码和解码。PHP内置函数的使用PHP中提供...
    99+
    2023-05-14
    Base64 php
  • php二维码怎么重复数组合
    二维码是一种可以在手机等移动设备上快速识别的图形。在php中,我们可以使用第三方库来生成二维码。而在生成二维码时,有时候我们需要重复生成多个二维码,这时候就需要将不同的信息与二维码进行配对。本文将介绍如何使用php重复生成二维码并与数组合并...
    99+
    2023-05-19
  • php怎么随机生成不重复字母
    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。php怎么随机生成不重复字母?随机码就是随机生成的一串字符序列,在网页设计中的很多地方都会用到,在PHP中,如何生成大量的不重复的随机码呢?比如,生成5000个由字母...
    99+
    2022-11-19
    php
  • php数组值不能重复怎么避免
    这篇文章主要介绍“php数组值不能重复怎么避免”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php数组值不能重复怎么避免”文章能帮助大家解决问题。为什么数组值不能重复?数组是一种特殊的变量类型,可以...
    99+
    2023-07-05
  • php不用函数怎么实现数组去重
    实现步骤:1、定义2个空数组,用于存储两次反转的键和值;2、用foreach语句遍历原数组,将原数组键和值赋给一个空数组作值和键,语法“foreach($arr as $k1=>$v1){$r1[$v1]=$k1;}”;3、用fore...
    99+
    2022-09-21
  • php怎么实现踢出数组的重复值
    在开发过程中,经常会涉及到处理数组的场景,其中处理重复值的问题是较为常见的。比如在购物车中,当用户加入同一种商品时需要判断商品是否已存在,避免重复添加。在这些场景下,我们需要一种方法来去除重复值,保证数据的准确性。PHP作为一种常用的服务器...
    99+
    2023-05-14
  • 怎么实现PHP删除数组重复元素
    这篇文章主要为大家展示了“怎么实现PHP删除数组重复元素”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么实现PHP删除数组重复元素”这篇文章吧。我们在实际操作PHP代码的过程中,经常会遇到数组...
    99+
    2023-06-17
  • php json实现中文不编码的方法
    本篇内容主要讲解“php json实现中文不编码的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php json实现中文不编码的方法”吧!使用 php 自带的 json_encode 函数对...
    99+
    2023-06-20
  • php怎么提取数组中不重复的值
    提取步骤:1、利用array_count_values()函数统计数组中元素的出现次数,语法“array_count_values(原数组)”,会返回一个关联数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数;2、利用array...
    99+
    2022-07-13
    php php数组
  • php怎么生成永不重复的字符串
    PHP是一种常用的开源脚本语言,它非常流行,因为它功能强大,易学易于使用。PHP中,生成永不重复的字符串是一个常见的需求,它在数据处理、安全验证等方面都有很大的作用。本文将介绍如何基于PHP生成永不重复的字符串,希望能帮助读者更好地理解PH...
    99+
    2023-05-14
    php php字符串
  • php json怎么使得中文不编码
    这篇文章主要讲解了“php json怎么使得中文不编码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php json怎么使得中文不编码”吧!php json中文不编码的实现方法:1、将中文字...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作