[英]Adding both leading and trailing zeros before/after any number in PHP
我有这两个数字分别是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即时在单位数字前加零
一种方法是,如果您的数字在[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;
我自己编写了此函数。
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
也许这可以解决。 它满足所有已评论的案例:
$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->输出= 04
num = 4.5->输出= 04.50
num = 10->输出= 10
num = 10.5->输出= 10.50
$num_padded = sprintf("%02.2f", $num);
因此,我们在该点之后有2位数字,在该点之前有2位数字(可能是零)。
这正是您所需要的:
字符串str_pad(字符串$ input,整数$ pad_length [,字符串$ pad_string =“” [,整数$ 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
对不起我的英语不好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.