0开头的数字递增

//0开头的数字递增
public function autoInc($num,$step=1){
    $count=count(str_split($num));
    $num_new=intval($num)+$step;
    if($num_new>pow(10,$count-1)){
        return $num_new;
    }else{
        return str_pad($num_new,$count,'0',STR_PAD_LEFT);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成11位的纯数字非0开头的唯一userid的方法可以基于Snowflake算法。Snowflake算法是Twitter开源的分布式唯一ID生成算法,其核心思想是生成一个64位的ID,其中高41位是时间戳,接着是10位的机器ID和12位的序列号。具体的实现方式可以是将机器ID设置为固定的值,然后使用时间戳和序列号生成唯一ID。下面是一个示例代码: ```python import time class Snowflake: def __init__(self, machine_id): self.machine_id = machine_id self.last_timestamp = 0 self.sequence = 0 def generate_id(self): timestamp = int(time.time() * 1000) if timestamp < self.last_timestamp: raise Exception('Clock moved backwards') elif timestamp == self.last_timestamp: self.sequence = (self.sequence + 1) & 0xfff if self.sequence == 0: timestamp = self.wait_for_next_millis(self.last_timestamp) else: self.sequence = 0 self.last_timestamp = timestamp return ((timestamp - 1577808000000) << 22) | (self.machine_id << 12) | self.sequence def wait_for_next_millis(self, last_timestamp): timestamp = int(time.time() * 1000) while timestamp <= last_timestamp: timestamp = int(time.time() * 1000) return timestamp # 使用机器ID为1来生成唯一ID snowflake = Snowflake(1) def generate_userid(): while True: # 生成唯一ID userid = snowflake.generate_id() # 将ID转换为11位数字,如果开头为0,则重新生成ID if str(userid)[:1] != '0': return int(str(userid)[:11]) ``` 该代码使用机器ID为1来生成唯一ID,然后将ID转换为11位数字,如果开头为0,则重新生成ID。由于Snowflake算法的特性,生成的ID是唯一的,并且按照时间顺序递增
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值