php批量生成产品编号:xxx.000001,并依次递增

      做物联网的都知道,我们需要给发布的设备一个编号,这个编号既要够复杂,又要数量够大,最好是从0开始,有多少设备,编号就有多大。因此这篇文章就应运而生。

一、php的str_pad()函数

(1)根据我的需求,通过自己来循环生成,并拼接也是可以的。但是既然php自带了这方面的函数,那当然还是用自带的函数更好一些。

(2)用法:

str_pad()函数的作用是:用一个字符串填充另一个指定字符串到指定长度。
str_pad(string,length,pad_string,pad_type)
参数 描述
string 必需。规定要填充的字符串。
length 必需。规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。
pad_string 可选。规定供填充使用的字符串。默认是空白。
pad_type
可选。规定填充字符串的哪边。
可能的值:
STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
STR_PAD_LEFT - 填充字符串的左侧。
STR_PAD_RIGHT - 填充字符串的右侧。默认。

(3)例如:

<?php
$str = "Hello World";
echo str_pad($str,30,".",STR_PAD_LEFT);
?>

//结果:...................Hello World

也就是说,这个函数可以填充我们规定的长度的字符串,这就很符合我们的要求了。

二、具体实现

(1)代码部分

  public function test_iot(Request $request){
  //假设我们需要批量生成10条
    $num = 10;
    //这里是我们要拼接的固定前缀
    $device_name = 'ABCD_';
    //设置从0开始
    $m = 0;
    $strs = '';
    for($i = 0; $i<$num; $i++){
    //每次循环,m都会递增
      $m = $m+1;
      //我们通过str_pad()函数,把递增的$m组合成7位的字符串,长度不够则用0来凑齐
      $str=$device_name.str_pad($m,7,'0',STR_PAD_LEFT );
      //把字符串用'&'连接起来,并打印
      $strs .= '&'.$str;
    }
    $strs = substr($strs,1);
    print_r($strs);

  }

(2)结果部分

ABCD_0000001&ABCD_0000002&ABCD_0000003&ABCD_0000004&ABCD_0000005&ABCD_0000006&ABCD_0000007&ABCD_0000008&ABCD_0000009&ABCD_0000010

这已经达到我们的目的了,生成我们想要的字符串

三、php的sprintf()函数,自动填充

(1)定义
把百分号(%)符号替换成一个作为参数进行传递的变量:

由于参数过多,具体请参考手册:
http://www.w3school.com.cn/php/func_string_sprintf.asp

(2)具体代码

public function test_iot1(){
    $num = 10;
    $device_name = 'ABCD_';
    $m = 0;
    $strs = '';
    for($i = 0; $i<$num; $i++){
      $m = $m+1;
      //代码和上面的差不都
      $str=$device_name.sprintf('%07s', $m);
      //最主要就是这部分,填充替换
      $strs .= '&'.$str;
    }
    $strs = substr($strs,1);
    print_r($strs);
  }

解释:
      sprintf()的功能非常灵活,上面的格式字符串中,“%07s ”表示输出成长度为7的字符串,如果长度不足,左边以零补全;如果写成 “%7s ”,则默认以空格补全;如果希望使用其它字符补全,则要在该字符前加上单引号,即形如“%’#7s ”的表示以井号补全;最后,如果希望补全发生在 字符串右边,则在百分号后加上减号,“%-07s ”。

(3)具体效果

ABCD_0000001&ABCD_0000002&ABCD_0000003&ABCD_0000004&ABCD_0000005&ABCD_0000006&ABCD_0000007&ABCD_0000008&ABCD_0000009&ABCD_0000010

      这两种方法都能达到我们想要的目的。当然,这边只是测试一下,只生成了10条数据,而且我是按照自己的需求给拼接起来了。大家可以按照自己的需求来操作字符串。

end

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值