淘宝双十一活动

php数字转人民币金额大写

 PHP基础  2019-12-28  admin  1743  2353

数值转人民币大写

/**
 * 数字转人民币金额大写
 * 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); //壹仟贰佰叁拾肆亿伍仟陆佰柒拾捌万玖仟零壹拾贰元壹角贰分


转载必须注明出处:

php数字转人民币金额大写 —— centphp

相关推荐


Hypef微服务使用task任务示例

在 Server 程序中如果需要执行很耗时的操作,比如一个聊天服务器发送广播,Web 服务器中发送邮件。如果直接去执行这些函数就会阻塞当前进程,导致服务器响应变慢。Swoole 提供了异步任务处理的功能,可以投递一个异步任务到 TaskWorker 进程池中执行,不影响当前请求的处理速度。hyperf微服务ask 组件主动方法投递示例&lt;?php declare(strict_types

PHP语法层面上的优化方法

### 1. foreach 效率更高,尽量用 foreach 代替 while 和 for 循环。 ### 2. 循环内部不要声明变量,尤其是对象这样的变量。 ### 3. 在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环放在外层,从而减少 cpu 跨循环层的次数,优化程序性能。 ### 4. 用单引号替代双引号引用字符串以实现 PHP 性能优化。 ### 5. 用 i+=

js读取文本文件示例

js读取文本文件示例&lt;!DOCTYPEhtml&gt; &lt;html&gt; &lt;head&gt; &lt;metacharset=&quot;GB2312&quot;&gt; &lt;title&gt;fileReader读取文本文件示例&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;scriptlanguage=javas

js拖动图片事件

js拖动图片时间&lt;!DOCTYPEhtml&gt; &lt;html&gt; &lt;head&gt; &lt;metacharset=&quot;UTF-8&quot;&gt; &lt;title&gt;拖放上传文件&lt;/title&gt; &lt;styletype=&quot;text/css&quot;&gt; *{ margin:0;padding:0; }