php数组金额转大写实例源码

01/**
02*数字金额转换成中文大写金额的函数
03*String Int  $num  要转换的小写数字或小写字符串
04*return 大写字母
05*小数位为两位
06**/
07function num_to_rmb($num){
08        $c1 "零壹贰叁肆伍陆柒捌玖";
09        $c2 "分角元拾佰仟万拾佰仟亿";
10        //精确到分后面就不要了,所以只留两个小数位
11        $num round($num, 2);
12        //将数字转化为整数
13        $num $num * 100;
14        if (strlen($num) > 10) {
15                return "金额太大,请检查";
16        }
17        $i = 0;
18        $c "";
19        while (1) {
20                if ($i == 0) {
21                        //获取最后一位数字
22                        $n substr($numstrlen($num)-1, 1);
23                else {
24                        $n $num % 10;
25                }
26                //每次将最后一位数字转化为中文
27                $p1 substr($c1, 3 * $n, 3);
28                $p2 substr($c2, 3 * $i, 3);
29                if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
30                        $c $p1 $p2 $c;
31                else {
32                        $c $p1 $c;
33                }
34                $i $i + 1;
35                //去掉数字最后一位了
36                $num $num / 10;
37                $num = (int)$num;
38                //结束循环
39                if ($num == 0) {
40                        break;
41                }
42        }
43        $j = 0;
44        $slen strlen($c);
45        while ($j $slen) {
46                //utf8一个汉字相当3个字符
47                $m substr($c$j, 6);
48                //处理数字中很多0的情况,每次循环去掉一个汉字“零”
49                if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
50                        $left substr($c, 0, $j);
51                        $right substr($c$j + 3);
52                        $c $left $right;
53                        $j $j-3;
54                        $slen $slen-3;
55                }
56                $j $j + 3;
57        }
58        //这个是为了去掉类似23.0中最后一个“零”字
59        if (substr($cstrlen($c)-3, 3) == '零') {
60                $c substr($c, 0, strlen($c)-3);
61        }
62        //将处理的汉字加上“整”
63        if (empty($c)) {
64                return "零元整";
65        }else{
66                return $c "整";
67        }
68}
69echo num_to_rmb(4562845.56);
文章来源:学什么
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值