生成一个不重复的订单号(php)

/** * 生成订单号 * * 用uniqid获取一个基于当前的微秒数生成的唯一不重复的字符串(但是他的前7位貌似很久才会发生变动,所以不用考虑可删除),取其第8到13位。但是这个字符串里面有英文字母,咋办? * 用ord获取他的ASCII码,所以就有了下一步:用str_split把这个字符串分割为数组,用array_map去操作(速度快点)。 * 然后返回的还是一个数组,KO,在用implode弄成字符串,但是字符长度不定,取前固定的几位,然后前面加上当前的年份和日期,这个方法生成的订单号,全世界不会有多少重复的。 * 当然,除非你把服务器时间往前调,但是调也不用怕,不相信他会在同一微秒内下两次订单,网络数据传输也要点时间的,即便你是在本地。 * * @return string */public static function createOrderNo(){    $date = date(‘Ymd‘);    return $date . substr(implode(NULL, array_map(‘ord‘, str_split(substr(uniqid(),            7, 13), 1))), 0, 8);}

原文地址:https://www.cnblogs.com/liuqd001/p/9144331.html

时间: 2024-10-10 12:25:10

生成一个不重复的订单号(php)的相关文章

mysql按顺序生成一个不重复的id

非字母和非0开头按顺序生成一个不重复的id select case when max(id) is null then '10000001' else max(id)+1 end as id from student; 字母开头按顺序生成一个不重复的id select case when max(id) is null then 'S10000001' else CONCAT('S',SUBSTRING(max(id),2)+1) end as id from student; 原文地址:htt

如何生成不重复的订单号?这里提供一个不重复订单号生成方法

最近老是被运营抱怨订单号太长不方便输入,可是如果随机生成太短的订单号又容易重复,造成客户提交订单失败. 夜不能眠下写了这个工具,完美解决了问题,在这里分享下,由于时间紧张考虑可能不太周到,如发现问题欢迎指教. import java.util.Collections; import java.util.HashSet; import java.util.Set; /** * 订单号生成器 */ public class OrderNoGenerator { private int size; p

使用表的id+随机数做不重复的订单号

用于分布式情况下的订单号的创建: 创建表: CREATE TABLE `shop_uuid_18` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `addTime` datetime DEFAULT NULL, `deleteStatus` bit(1) NOT NULL DEFAULT b'0', `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) )

生成26位唯一的订单号

/** * Note : 生成26位数字的唯一订单号 * Author : LMZ * Time : 2019/9/2 10:50 * @return string */ function create_order_sn(){ //date("Ymdhis") . sprintf("%08d", $user_id) . mt_rand(1000, 9999);//郝英晨的生成方法 $sn = date('Ymdhis') . substr(implode(null,

生成一个没有重复数字的随机数(JAVA)

public class TestRandom { public static void main(String[] args) { //随机数 int[] random = new int[4]; for(int i = 0; i < random.length; i++){ random[i] = (int)(Math.random() * 10); for(int j =0; j < i; j++){ if(random[j] == random[i]){ i--; break; } }

Python中生成一个没有重复元素的随机序列??

1 # 产生一个0-10的随机序列,元素不能重复 2 def randSeq(): 3 import random; 4 randSequence=random.sample(range(0,10),10); 5 return randSequence; 运行结果: 1 >>> randSequence 2 [0, 6, 4, 9, 3, 5, 1, 8, 2, 7] 3 >>>

订单号生成规则

前阵子,公司有个电子商务项目,需要生成订单号.当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法.我们都知道,订单号最基本的要求就是唯一,这个条件必须满足.仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的.所以上述方法不可靠,有待强化.在网上找了一番,发现这位同学的想法挺不错的,redtamo,具体的请稳步过去看看,我作简要概述,该方法用上了英文字母.年月日.Unix 时间戳和微秒数.随机数,重复的可能性大大

订单号的生成

订单号有3个属性:1.唯一性 2.不可推测性 3.效率性 唯一性是当中最重要的一个,重复了这个订单号就没有意义.其次就是效率性,反复查找数据库会生成的很慢! 不规则订单号生成思路:System.currentTimeMillis()+几位随机数,就OK了.System.currentTimeMillis()这个数一般是不会出现同一个的. 在一些公司的内部系统中可能会要求我们给出一个规则的顺序订单号,比如:年月日+(当前订单数+1),特殊字符串+(当前订单数+1).因为两个人同时操作时会是同一个订

不重复订单号生成规则

偶尔在网上看到的,相对比较好的c#端订单号生成规则 public class BillNumberBuilder{ private static object locker = new object(); private static int sn = 0; public static string NextBillNumber(){ lock(locker){ if(sn == 9999999999) sn = 0; else sn++; return DateTime.Now.ToStrin