| 符號 | 說明 | 範例 |
| %04d | 寬度 4,不足補 0,帶正負號十進位 | sprintf("%04d", 42) → "0042" |
| %d | 帶正負號十進位 | sprintf("%d", 42) → "42" |
| %s | 字串 | sprintf("%s", "abc") → "abc" |
| %f | 浮點數(預設 6 位小數) | sprintf("%.2f", 3.14159) → "3.14" |
| %x / %X | 十六進位(小寫/大寫) | sprintf("%X", 255) → "FF" |
| %% | 輸出字面 % | sprintf("100%%") → "100%" |
方法二:str_pad() —— 專為填充設計
<?php
$num = 42;
// 預設左側填充(STR_PAD_LEFT)
echo str_pad($num, 5, '0', STR_PAD_LEFT); // "00042"
echo str_pad($num, 5, '0', STR_PAD_RIGHT); // "42000"
echo str_pad($num, 5, '0', STR_PAD_BOTH); // "04200" (左右分配)
?>
方法三:number_format() —— 千分位與小數位格式化
雖非專為補零設計,但常用於金額顯示:
<?php
$number = 1234.5678;
// 英式:千分位逗號,小數點
echo number_format($number, 2, '.', ','); // "1,234.57"
// 法式:千分位空格,小數點逗號
echo number_format($number, 2, ',', ' '); // "1 234,57"
// 無千分位,僅保留小數
echo number_format($number, 2, '.', ''); // "1234.57"
?>
效能與選擇建議
| 函數 | 適用場景 | 效能 | 備註 |
| sprintf | 複雜格式化(多參數、混合型別)、C 風格習慣 | 中等 | 功能最強大,格式字串需熟悉 |
| str_pad | 單純字串填充、補零、補空格 | 最快 | 語意清晰,專一功能 |
| number_format | 金額、數字人性化顯示 | 中等 | 內建千分位、地區化支援 |
常見錯誤避坑
- sprintf("%04d", "42"):字串會被自動轉型為整數,正常運作
- sprintf("%04d", 3.14):浮點數會被截斷為 3,輸出 "0003"
- str_pad(42, 3, '0'):若原字串長度 >= 指定寬度,不會截斷,原樣返回 "42"
總結
- 單純補零 →
str_pad($num, $len, '0', STR_PAD_LEFT) 最直觀高效
- 複合格式(如
ID-%04d-%s) → sprintf() 一行搞定
- 金額顯示 →
number_format() 專業之選
- 上一篇文章: 帝國 CMS 循環子欄目標籤 listsonclass 完整參考
- 下一篇文章: 帝國 CMS 內建資料庫類 mysqlquery 使用全攻略
Copyright ©
程式碼之家 All Rights Reserved