php 数字转中文(人民币) 需求 123 反 壹佰贰拾叁圆整

68 阅读1分钟
function numberToChinese($number)
{
    $chineseNumArray = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
    $chineseUnitArray = array('', '拾', '佰', '仟', '万', '亿', '圆');

    $number = strval($number);
    $length = strlen($number);
    $result = '';

    $decimalIndex = strpos($number, '.');
    if ($decimalIndex !== false) {
        // 处理整数部分
        $integerPart = substr($number, 0, $decimalIndex);
        $integerLength = strlen($integerPart);

        for ($i = 0; $i < $integerLength; $i++) {
            $digit = intval($integerPart[$i]);
            if ($digit == 0) {
                continue;
            }
            $result .= $chineseNumArray[$digit] . $chineseUnitArray[$integerLength - $i - 1];
        }

        // 处理小数部分
        $decimalPart = substr($number, $decimalIndex + 1);
        $decimalLength = strlen($decimalPart);

        if ($decimalLength > 0) {
            $result .= '点';
            for ($i = 0; $i < $decimalLength; $i++) {
                $digit = intval($decimalPart[$i]);
                if ($digit == 0) {
                    continue;
                }
                $result .= $chineseNumArray[$digit];
            }
        }
    } else {
        // 处理整数部分
        for ($i = 0; $i < $length; $i++) {
            $digit = intval($number[$i]);
            if ($digit == 0) {
                continue;
            }
            $result .= $chineseNumArray[$digit] . $chineseUnitArray[$length - $i - 1];
        }
    }

    // 添加圆整
    if (empty($result)) {
        $result = $chineseNumArray[0];
    }
    $result .= '圆整';

    return $result;
}
// 示例
$number = 554;
$chinese = numberToChinese($number);
echo $chinese;//伍佰伍拾肆圆整
die();