让编程改变世界

让编程改变世界、改变生活、改变自己

PHP开发小技巧①⑨—实现将数字转换为大写金额计数

在我们开发项目过程中,有时会遇到这种情况:当我们在写支付账单的时候需要填写数字金额的大写,有的时候还真的写不出来,这个时候用百度也听尴尬的,特地写了这个方法,可以经常使用,进行直接转换。


代码实现如下:

<?php
/**
 * =======================================
 * Created by ZHIHUA·WEI.
 * Author: ZHIHUA·WEI
 * Date: 2018/1/29
 * Time: 10:10
 * Project: PHP开发小技巧
 * Power: 实现将数字转换为大写金额计数
 * =======================================
 */

/**
 * 函数:将数字转换为大写金额
 * @param $number int 输入的数字
 * @return string
 */
header("Content-type:text/html;charset=utf-8");
function NumberTransformCny($number)
{
    //定义数字大写、人名币单位、数字单位
    static $NumbersUp = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"),
    $CnyUnits = array("圆", "角", "分"),
    $NumUnits = array("拾", "佰", "仟", "万", "拾", "佰", "仟", "亿");
    //将数字按小数点分开
    //num1为整数部分,num2为小数部分
    list($num1, $num2) = explode(".", $number, 2);
    //将小数点后两位分开,此时num2为数组
    $num2 = array_filter(array($num2[1], $num2[0]));
    //将整数部分进行转换
    $ret = array_merge($num2, array(implode("", _Cny_Map_Unit(str_split($num1), $NumUnits)), ""));
    $ret = implode("", array_reverse(_Cny_Map_Unit($ret, $CnyUnits)));
    return str_replace(array_keys($NumbersUp), $NumbersUp, $ret);
}

/**
 * 函数:将整数转换成带单位字符串
 * @param $list array 数字数组
 * @param $units array 单位数组
 * @return array
 */
function _Cny_Map_Unit($list, $units)
{
    $u_num = count($units);
    $ret = array();
    foreach (array_reverse($list) as $item) {
        $num = count($ret);
        if ($item != "0" || !($num % 4))
            $n = ($item == '0' ? '' : $item) . ($units[($num - 1) % $u_num]);
        else
            $n = is_numeric($ret[0][0]) ? $item : '';
        array_unshift($ret, $n);
    }
    return $ret;
}

$number = 12345678.19;
var_dump(NumberTransformCny($number));

//打印结果:壹仟贰佰叁拾肆万伍仟陆佰柒拾捌圆壹角玖分


阅读更多
版权声明:转载时请标注http://blog.csdn.net/zhihua_w https://blog.csdn.net/Zhihua_W/article/details/79192533
个人分类: PHP
所属专栏: PHP开发小技巧
想对作者说点什么? 我来说一句

数字大小写转换PHP代码

u013372487 u013372487

2015-08-22 13:46:05

阅读数:2554

没有更多推荐了,返回首页

不良信息举报

PHP开发小技巧①⑨—实现将数字转换为大写金额计数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭