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

php如何实现不重复编码

2023-06-22 02:06:38 715人浏览 薄情痞子
摘要

这篇文章主要讲解了“PHP如何实现不重复编码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现不重复编码”吧!php实现不重复编码的方法:1、创建一个PHP示例文件;2、使用PHP

这篇文章主要讲解了“PHP如何实现不重复编码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现不重复编码”吧!

php实现不重复编码的方法:1、创建一个PHP示例文件;2、使用PHP进行进制转换;3、通过数据库得到10进制的编号,并保证编号唯一即可。

php如何实现不重复编码

本文操作环境: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位的不重复的会员卡号。

感谢各位的阅读,以上就是“php如何实现不重复编码”的内容了,经过本文的学习后,相信大家对php如何实现不重复编码这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: php如何实现不重复编码

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

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

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

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

下载Word文档
猜你喜欢
  • php如何实现不重复编码
    这篇文章主要讲解了“php如何实现不重复编码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现不重复编码”吧!php实现不重复编码的方法:1、创建一个PHP示例文件;2、使用PHP...
    99+
    2023-06-22
  • php怎么实现不重复编码
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php怎么实现不重复编码?PHP实现生成唯一编号(36进制的不重复编号):当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订...
    99+
    2020-01-07
    php
  • php不重复唯一值如何实现
    今天小编给大家分享一下php不重复唯一值如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php实现不重复唯一值的方法:...
    99+
    2023-07-04
  • php range不重复随机数如何实现
    这篇文章主要介绍“php range不重复随机数如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php range不重复随机数如何实现”文章能帮助大家解决问题。php range实现不重复随机...
    99+
    2023-07-04
  • 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如何实现ucs2编码
    小编给大家分享一下php如何实现ucs2编码,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php实现ucs2编码的方法:1、创建一个PHP示例文件;2、通过“fu...
    99+
    2023-06-22
  • php数组合并如何不去重复
    小编给大家分享一下php数组合并如何不去重复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在PHP中,可以利用array_merge_recursive()函数实...
    99+
    2023-06-25
  • php json实现中文不编码的方法
    本篇内容主要讲解“php json实现中文不编码的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php json实现中文不编码的方法”吧!使用 php 自带的 json_encode 函数对...
    99+
    2023-06-20
  • php如何实现Base64的编码和解码
    这篇文章主要讲解了“php如何实现Base64的编码和解码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现Base64的编码和解码”吧!PHP内置函数的使用PHP中提供了两个内置...
    99+
    2023-07-05
  • php如何生成不重复的序列号
    这篇“php如何生成不重复的序列号”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php如何生成不重复的序列号”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们...
    99+
    2023-06-06
  • php如何随机生成不重复字母
    今天小编给大家分享一下php如何随机生成不重复字母的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php随机生成不重复字母的方...
    99+
    2023-07-04
  • 【黄啊码】PHP如何防止重复提交
    防抖(Debounce)是一种防止重复提交的策略,它通过延迟一定时间来合并连续的操作,以确保只执行一次。 以下是几种防抖的实现方法以及对应的代码示例: 1. 前端 JavaScript 实现: 在前端使用 JavaScript 实现防抖,可...
    99+
    2023-09-13
    php 开发语言
  • php如何实现汉字转unicode编码
    小编给大家分享一下php如何实现汉字转unicode编码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php实现汉字转unicode编码的方法:首先创建一个PHP示例文件;然后通过“function UnicodeEnco...
    99+
    2023-06-08
  • php如何生成字符串唯一不重复
    小编给大家分享一下php如何生成字符串唯一不重复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php生成字符串唯一不重复的方法:1、当前时间戳进行md5加密,截取...
    99+
    2023-06-20
  • php如何生成永不重复的字符串
    这篇文章主要介绍“php如何生成永不重复的字符串”,在日常操作中,相信很多人在php如何生成永不重复的字符串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何生成永不重复的字符串”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • php如何提取数组中不重复的值
    今天小编给大家分享一下php如何提取数组中不重复的值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。提取步骤:1、利用arra...
    99+
    2023-07-02
  • php数组内元素不重复如何判断
    本篇内容主要讲解“php数组内元素不重复如何判断”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php数组内元素不重复如何判断”吧!判断步骤:1、用array_unique()去除数组中的重复值,...
    99+
    2023-07-05
  • Python 容器日志同步,如何实现数据不丢失、不重复?
    容器化应用的快速发展,使得容器日志的管理变得越来越重要。在容器日志管理的过程中,同步容器日志是一个常见的需求。容器日志同步需要满足不丢失、不重复等要求,因此,如何实现 Python 容器日志同步是一个值得探讨的话题。 一、容器日志同步的需...
    99+
    2023-11-02
    容器 日志 同步
  • php如何查找数组中不重复的元素
    本篇内容主要讲解“php如何查找数组中不重复的元素”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何查找数组中不重复的元素”吧!方法:1、用array_count_values()统计元素...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作