PHP数字金额转大小格式

2020-05-13
/**
 * 格式化金钱为汉字
 * @param string $money 数字金钱
 * @return string
 */
function formatMoney($money)
{
    // 格式化为2位小数
    $money = sprintf('%0.2f', $money);
    // 单位
    $unit = ['分', '角', '零', '块', '十', '百', '千', '万', '十', '百', '千', '亿'];
    // 数字对应的汉字
    $num = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
    // 转换为数组
    $moneys = str_split($money);
    $len = count($moneys);
    $resultArr = [];
    foreach ($moneys as $k => $m) {
        if ($m !== '.') {
            $resultArr[] = $num[$m] . $unit[$len - $k - 1];
        }
    }
    return implode('', $resultArr);
}

echo formatMoney(1.2) . PHP_EOL;
echo formatMoney(199.23) . PHP_EOL;
echo formatMoney(34199.235) . PHP_EOL;