我有这两个数字是4和4.5。我希望它们都被格式化为04和04.50。
下面是我正确显示数字4所做的工作。
$num_padded = sprintf("%02s", 4);
echo $num_padded;
但它不适用于4.5
如果no是2位数,如10或10.50,则不应添加零。当值为10.5时,必须添加最后一个零。我怎么能用PHP完成类似的工作?
我在这里找到了类似的答案,但不完全是我要找的。 PHP prepend leading zero before single digit number, on-the-fly
答案 0 :(得分:2)
这样做的一种方法是,如果你的号码在[0,10]范围内,只需加一个“0”
$num_padded = $num;
if ($num != floor($num)) {
$num_padded = sprintf("%2.2f", $num);
}
if ($num < 10 && $num >= 0)
$num_padded = "0" . $num_padded;
答案 1 :(得分:1)
我自己写了这个函数。
function format_string($str) {
$val = '';
if (is_int($str))
$val = sprintf("%02s", $str);
else if (is_float($str))
$val = str_pad(sprintf("%0.2f", $str), 5, '0', STR_PAD_LEFT);
return $val;
}
echo format_string(4); // 04
echo format_string(4.5); // 4.50
答案 2 :(得分:1)
也许这可能是一个解决方案;它满足所有评论的案例:
$num = 10.5;
$padded="0000".$num."0000";
if (($dotpos = strpos($padded, ".")) !== FALSE) {
$result = substr($padded, $dotpos-2, 2).".".substr($padded, $dotpos+1, 2);
} else {
$result = sprintf("%02s", $num);
}
echo $result;
例:
num = 4 - &gt;输出= 04
num = 4.5 - &gt;输出= 04.50
num = 10 - &gt;输出= 10
num = 10.5 - &gt;输出= 10.50
答案 3 :(得分:0)
$num_padded = sprintf("%02.2f", $num);
所以我们在点之后有2位数字,之前有两位数字(可能是零)。
答案 4 :(得分:0)
这正是您所需要的:
string str_pad(string $ input,int $ pad_length [,string $ pad_string =“”[,int $ pad_type = STR_PAD_RIGHT]])
参考: http://php.net/manual/en/function.str-pad.php
参数:
示例:强>
echo str_pad( '9', 10, '0', STR_PAD_LEFT ); // 0000000009
echo str_pad( '9', 10, '0', STR_PAD_RIGHT ); // 9000000000
抱歉我的英文