我有一个变量,其值为1234567。
我希望它包含8位数字,即01234567。
有PHP函数吗?
我有一个变量,其值为1234567。
我希望它包含8位数字,即01234567。
有PHP函数吗?
当前回答
echo str_pad("1234567", 8, '0', STR_PAD_LEFT);
其他回答
当我需要01而不是1时,下面的方法对我有用:
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
您需要的是Sprintf。
编辑(在某种程度上被downvotes要求),从上面链接的页面,这里有一个“零填充整数”示例:
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
使用sprintf:
sprintf('%08d', 1234567);
或者你也可以使用str_pad:
str_pad($value, 8, '0', STR_PAD_LEFT);
如果输入的数字总是7或8位,也可以使用
$str = ($input < 10000000) ? 0 . $input : $input;
我运行了一些测试,这将比str_pad或sprintf快一倍。 如果输入可以是任意长度,那么你也可以使用
$str = substr('00000000' . $input, -8);
这没有另一个快,但也应该比str_pad和sprintf快一点。
顺便说一句:我的测试还说sprintf比str_pad快一点。我使用PHP 5.6进行所有测试。
编辑:虽然substr版本看起来仍然非常快(PHP 7.2),但它也被打破了,以防你的输入可能比你想要填充的长度更长。例如,你想要填充到3位数字,而你的输入有4个比substr('0000'。'1234', -3) = '234'只会产生最后3位数字
$no_of_digit = 10;
$number = 123;
$length = strlen((string)$number);
for($i = $length;$i<$no_of_digit;$i++)
{
$number = '0'.$number;
}
echo $number; /////// result 0000000123