0
点赞
收藏
分享

微信扫一扫

获取金额对应中文大写,返回对应的数组,如元对应的中文金额数字

哈哈我是你爹呀 2022-03-23 阅读 66
php

效果图

在这里插入图片描述
核心:返回几佰几仟几元几角几分,对金额进行拆分

核心代码:

/**
 * 获取金额对应中文大写,返回对应的数组,如元对应的中文金额数字
 * @param $amount 金额
 * @param int $type 是否获取小数
 * @return array 数组
 */
function convertAmountToCn($amount, $type = 1)
{

    // 预定义中文转换的数组
    $digital = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');

    if ($amount == 0) {

        $arr = [];

        $arr['元'] = '零';
        $arr['角'] = '零';
        $arr['分'] = '零';

        return $arr;
    }

    if (strlen($amount) > 10) {
        return "不支持千万及更高金额";
    }

    // 预定义单位转换的数组
    $position = array('仟1', '佰1', '拾1', '亿', '仟2', '佰2', '拾2', '万', '仟3', '佰3', '拾3', '元');

    // 将金额的数值字符串拆分成数组
    $amountArr = explode('.', $amount);
    // 将整数位的数值字符串拆分成数组
    $integerArr = str_split($amountArr[0], 1);

    $key_fee = [];

    // 将整数部分替换成大写汉字
    $result = '';
    $integerArrLength = count($integerArr);
    $positionLength = count($position);
    for ($i=0; $i<$integerArrLength; $i++) {
        //$result = $result . $digital[$integerArr[$i]]. $position[$positionLength - $integerArrLength + $i];

        $key_fee[$position[$positionLength - $integerArrLength + $i]] = $digital[$integerArr[$i]];

    }

    // 如果小数位也要转换
    if ($type == 1)
    {
        // 将小数位的数值字符串拆分成数组
        $decimalArr = str_split($amountArr[1], 1);
        // 将小数部分替换成大写汉字
        //$result = $result . $digital[$decimalArr[0]] . '角' . $digital[$decimalArr[1]] . '分';

        $key_fee['角'] = $digital[$decimalArr[0]];
        $key_fee['分'] = $digital[$decimalArr[1]];

    }


    return $key_fee;
}
举报

相关推荐

0 条评论