php数字转人民币金额大写

 PHP基础  2019-12-28  admin  1400  1890

数值转人民币大写

/**
 * 数字转人民币金额大写
 * Class Ext_Num2Cny
 */
class Number2Cny
{
    static $basic = array(0 => "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
    static $advanced = array(1 => "拾", "佰", "仟");

    public static function parseNumber($number)
    {
        $number = trim($number);
        if ($number > 999999999999) {
            return "无法处理";
        }
        if ($number == 0) {
            return "零";
        }
        if (strpos($number, '.')) {
            $number = round($number, 2);
            $data = explode(".", $number);
            $data[0] = self::parseInt($data[0]);
            $data[1] = self::parseDec($data[1]);
            return $data[0] . $data[1];
        } else {
            return self::parseInt($number) . '整';
        }
    }

    /**
     * 整数部分
     * @param $number
     * @return string
     */
    public static function parseInt($number)
    {
        $arr = array_reverse(str_split($number));
        $data = '';

        $zero_num = 0;
        foreach ($arr as $k => $v) {
            $_chinese = '';
            $zero = ($v == 0) ? true : false;
            $x = $k % 4;
            if ($x && $zero && $zero_num > 1) {
                continue;
            }
            switch ($x) {
                case 0:
                    if ($zero) {
                        $zero_num = 0;
                    } else {
                        $_chinese = self::$basic[$v];
                        $zero_num = 1;
                    }
                    if ($k == 8) {
                        $_chinese .= '亿';
                    } elseif
                    ($k == 4) {
                        $_chinese .= '万';
                    }
                    break;
                default:
                    if ($zero) {
                        if ($zero_num == 1) {
                            $_chinese = self::$basic[$v];
                            $zero_num++;
                        }
                    } else {
                        $_chinese = self::$basic[$v];
                        $_chinese .= self::$advanced[$x];
                    }
            }
            $data = $_chinese . $data;
        }
        if (empty($data)) {
            $data = self::$basic[0];
        }
        return $data . '元';
    }

    /**
     * 小数部分
     * @param $number
     * @return string
     */
    public static function parseDec($number)
    {
        if (strlen($number) < 2) $number .= '0';
        $arr = array_reverse(str_split($number));
        $data = '';
        $zero_num = false;
        foreach ($arr as $k => $v) {
            $zero = ($v == 0) ? true : false;
            $_chinese = '';
            if ($k == 0) {
                if (!$zero) {
                    $_chinese = self::$basic[$v];
                    $_chinese .= '分';
                    $zero_num = true;
                }
            } else {
                if ($zero) {
                    if ($zero_num) {
                        $_chinese = self::$basic[$v];
                    }
                } else {
                    $_chinese = self::$basic[$v];
                    $_chinese .= '角';
                }
            }
            $data = $_chinese . $data;
        }
        return $data;
    }
}

使用

echo Number2Cny::parseNumber(123456);//壹拾贰万叁仟肆佰伍拾陆元整
echo "\n";
echo Number2Cny::parseNumber(0.12);//元壹角贰分
echo "\n";
echo Number2Cny::parseNumber(10);//元壹角贰分
echo "\n";
echo Number2Cny::parseNumber(123456.12);//壹拾贰万叁仟肆佰伍拾陆元壹角贰分
echo "\n";
echo Number2Cny::parseNumber(123456789012.1234); //壹仟贰佰叁拾肆亿伍仟陆佰柒拾捌万玖仟零壹拾贰元壹角贰分


相关推荐


Laravel自定义表单验证规则,添加验证规则

Laravel 提供了许多有用的验证规则;同时也支持自定义规则。在服务容器中使用这个方法来注册自定义验证规则: Laravel 自定义规则实现手机号、身份证号、密码强度的验证

Linux查看杀死被占用的端口

Linux查看并杀死被占用的端口sudo apt-get install lsof   //安装lsof,一般默认安装了sudo lsof -i:端口号      //查找对应的进程号sudo kill -9 进程号      //杀死对应的进程 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof

php中奖概率算法,刮刮卡,大转盘等抽奖算法

php中奖概率算法,刮刮卡,大转盘等抽奖算法/** *经典的概率算法, *$arrPrize是一个预先设置的奖品数组, *假设数组为:array(100,200,300,400), *开始是从1,1000这个概率范围内筛选第一个数是否在出现概率范围之内, *如果不在,则将概率空间的值减去刚刚的那个数字的概率空间, *在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选

php根据总金额生成指定个数的随机红包,红包算法

php根据总金额生成指定个数的随机红包,红包算法/** *根据总金额生成指定个数的随机红包 *1、微信红包,每人最少分得1分钱 *2、每人分得到的金额是随机分配的 *3、每次生成红包就生成了对应领取红包的结果 *生成随机红包 *ClassredPacket */ classredPacket { //总金额 private$total=0; //红包数量 private$