金額顯示常需 1234567890 → 1,234,567,890。PHP 內建 number_format() 可直接完成,手動實作可參考演算法邏輯。
echo number_format(1234567890); // 1,234,567,890 echo number_format(1234.56, 2, '.', ','); // 1,234.56 (小數點、千分位自訂)
function splitStrWithComma($str) {
$len = strlen($str);
$chunks = [];
for ($i = $len; $i > 0; $i -= 3) {
$start = max(0, $i - 3);
$chunks[] = substr($str, $start, $i - $start);
}
return implode(',', array_reverse($chunks));
}
echo splitStrWithComma("1234567890"); // 1,234,567,890
function formatNumber($num, $decimals = 0) {
$parts = explode('.', (string)$num);
$intPart = $parts[0];
$decPart = $parts[1] ?? '';
$formattedInt = splitStrWithComma($intPart);
if ($decimals > 0) {
$decPart = substr($decPart . str_repeat('0', $decimals), 0, $decimals);
return "$formattedInt.$decPart";
}
return $formattedInt;
}
$fmt = new NumberFormatter('zh_TW', NumberFormatter::DECIMAL);
echo $fmt->format(1234567.89); // 1,234,567.89 (依地區設定)
實務請直接用 number_format() 或 NumberFormatter,手僅供演算法參考。