php數字金額轉換成中文大寫顯示

整個功能其實不難,只是還算挺實用,所以記一下哈,其他編程語言轉換一下也是能可以的!
思路:把傳過來的金額轉換成整數和小數兩部分,再對其分別進行轉換處理

代碼附上:

function moneyToString($num)
{
    $digits = ['零', '壹', '貳', '叄', '肆', '伍', '陸', '柒', '捌', '玖'];
    $radices =['', '拾', '佰', '仟', '萬', '億'];
    $bigRadices = ['', '萬', '億'];
    $decimals = ['角', '分'];
    $cn_dollar = '元';
    $cn_integer = '整';

    $num_arr = explode('.', $num);
    $int_str = $num_arr[0] ?? '';
    $float_str = $num_arr[1] ?? '';

    $outputCharacters = '';
    if ($int_str) {
        $int_len = strlen($int_str);
        $zeroCount = 0;
        for ($i = 0; $i < $int_len; $i++) {
            $p = $int_len - $i - 1;
            $d = substr($int_str, $i, 1);
            $quotient = $p / 4;
            $modulus = $p % 4;
            if ($d == "0") {
                $zeroCount++;
            }
            else {
                if ($zeroCount > 0)
                {
                    $outputCharacters += $digits[0];
                }
                $zeroCount = 0;
                $outputCharacters .= $digits[$d] . $radices[$modulus];
            }
            if ($modulus == 0 && $zeroCount < 4) {
                $outputCharacters .= $bigRadices[$quotient];
                $zeroCount = 0;
            }
        }
        $outputCharacters .= $cn_dollar;
    }

    if ($float_str) {
        $float_len = strlen($float_str);
        for ($i = 0; $i < $float_len; $i++) {
            $d = substr($float_str, $i, 1);
            if ($d != "0") {
                $outputCharacters .= $digits[$d] . $decimals[$i];
            }
        }
    }

    if ($outputCharacters == "") {
        $outputCharacters = $digits[0] . $cn_dollar;
    }
    if ($float_str) {
        $outputCharacters .= $cn_integer;
    }

    return $outputCharacters;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章