PHP range函数生成带前导零数字序列的实现问题咨询
实现方法
要生成带前导零的000到999序列,直接给range()传带前导零的数字是行不通的——因为PHP会把带前导零的数字解析为八进制(且超过0777的八进制数字会报错),而且range()返回的是数字类型数组,本身不存在前导零。
可以用以下两种简单方法实现:
方法一:用array_map + sprintf格式化
先生成0到999的数字序列,再通过sprintf把每个数字格式化为三位带前导零的字符串:
$ids = array_map(function($num) { return sprintf('%03d', $num); }, range(0, 999));
%03d的含义是:将数字格式化为至少3位,不足的地方用前导零填充。
方法二:用array_map + str_pad补零
同样先生成数字序列,再用str_pad给每个数字补前导零到3位:
$ids = array_map(function($num) { return str_pad($num, 3, '0', STR_PAD_LEFT); }, range(0, 999));
str_pad($num, 3, '0', STR_PAD_LEFT)表示把数字转为字符串后,在左侧补零直到总长度为3。
验证结果
上面两种方法生成的数组元素都是字符串类型的"000"、"001"、...、"999",完全符合业务需求。
内容的提问来源于stack exchange,提问作者bre
相关产品推荐
相关产品推荐

