设计,技术,行业
一、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条数据,而且我是按照自己的需求给拼接起来了。大家可以按照自己的需求来操作字符串。