Php 如果只需要两位数字(01,02…10,11),如何使用range()?
我有一系列这样的数字Php 如果只需要两位数字(01,02…10,11),如何使用range()?,php,arrays,range,Php,Arrays,Range,我有一系列这样的数字 $arr = range(01,10); 但我希望输出是 Array ( [0] => 01 [1] => 02 [2] => 03 ... [9] => 10) 我该怎么做呢?您可能需要array\u map(): 或者,您也可以使用sprintf(): return sprintf('%02d', $item); 如果阵列较大,您可能希望就地进行更换;谢谢你的建议: array_walk($arr, function(&$item
$arr = range(01,10);
但我希望输出是
Array ( [0] => 01 [1] => 02 [2] => 03 ... [9] => 10)
我该怎么做呢?您可能需要
array\u map()
:
或者,您也可以使用sprintf()
:
return sprintf('%02d', $item);
如果阵列较大,您可能希望就地进行更换;谢谢你的建议:
array_walk($arr, function(&$item) {
$item = str_pad($item, 2, '0', STR_PAD_LEFT);
});
查看该选项。您可以使用它将前导零添加到输出中
foreach($arr as $key=>$val) {
$arr[$key] = str_pad($val, 2, '0', STR_PAD_LEFT);
}
var_dump($arr);
使用带有引用的foreach循环:
$arr = range(1,10);
foreach($arr as &$val) {
$val = str_pad($val, 2, '0', STR_PAD_LEFT);
}
var_dump($arr);
str_pad($x,2,'0',str_pad_左);不要试图以这种方式将它们存储在数组中(原因之一是八进制数问题)。将它们作为正则整数存储在数组中,并格式化以供输出。正如其他人所说,整数没有填充的概念。填充用于字符串。数字没有任何数字的概念。这是数字的字符串表示形式的属性。将所有内容转换为字符串并检查长度。这是一种懒惰的方式,很好。恰当、简洁的解决方案+1迪托·科林打算建议array_walk:-)+1是
array_map
真的比foreach($arr as&$item)
更可取吗?@Eric他们不一样。一个就地修改数组,另一个返回原始数组的修改副本array\u walk
将相当于一个foreach
byreference@Eric视情况而定;如果数组足够大,最好使用引用执行array\u walk()
或foreach
。只是不想使用array\u walk
?它是faster@ColinMorelli:真的吗?这似乎不太可能是的,事实上,现在我考虑到为array\u walk
foreach($arr as $key=>$val) {
$arr[$key] = str_pad($val, 2, '0', STR_PAD_LEFT);
}
var_dump($arr);
$arr = range(1,10);
foreach($arr as &$val) {
$val = str_pad($val, 2, '0', STR_PAD_LEFT);
}
var_dump($arr);