在PHP中的任何数字之前/之后添加前导零和尾随零

时间:2013-09-30 15:55:05

标签: php string numbers zero

我有这两个数字是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

5 个答案:

答案 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)

这正是您所需要的:

str_pad()

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

参数:

  1. 您的电话号码
  2. 您想要多少个空格(或0)
  3. 替换这些空格的字符(第3项)
  4. 数字的左侧或右侧(字符串,第一个参数)
  5. 示例:

    echo str_pad( '9', 10, '0', STR_PAD_LEFT ); // 0000000009
    echo str_pad( '9', 10, '0', STR_PAD_RIGHT ); // 9000000000
    

    抱歉我的英文