簡體   English   中英

在PHP中的任何數字之前/之后添加前導和尾隨零

[英]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()

字符串str_pad(字符串$ input,整數$ pad_length [,字符串$ pad_string =“” [,整數$ pad_type = STR_PAD_RIGHT]])

參考: http : //php.net/manual/en/function.str-pad.php

參數:

  1. 你的電話號碼
  2. 您想要多少個空格(或0)
  3. 替換這些空格的字符(項目3)
  4. 數字的左邊或右邊(字符串,第一個參數)

例:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM