搜索
首页后端开发PHP问题php 金额大小写如何转换

php金额大小写转换的方法:使用金额转换函数grees,代码为【$grees=array("拾","佰","仟","万","拾","佰","仟","亿");list($ns1,$ns2)=explode(".",$ns,2)】。

php 金额大小写如何转换

php金额大小写转换的方法:

早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下。金额转换的函数方法有很多,都很不错。不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义。如有问题请朋友们指出,谢谢啦!

废话不多说直接上代码:

<?  
function upper($ns) { 
    static $cnums=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"), 
        $cnyunits=array("圆","角","分"), 
        $grees=array("拾","佰","仟","万","拾","佰","仟","亿"); 
    list($ns1,$ns2)=explode(".",$ns,2); 
    $ns2=array_filter(array($ns2[1],$ns2[0])); 
    $ret=array_merge($ns2,array(implode("",calu(str_split($ns1),$grees)),"")); 
    $ret=implode("",array_reverse(calu($ret,$cnyunits))); 
    return str_replace(array_keys($cnums),$cnums,$ret); 
}

function calu($list,$units) { 
    $ul=count($units); 
    $xs=array(); 
    foreach (array_reverse($list) as $x) { 
        $l=count($xs); 
        if ($x!="0" || !($l%4)) $n=($x==&#39;0&#39;?&#39;&#39;:$x).($units[($l-1)%$ul]); 
        else $n=is_numeric($xs[0][0])?$x:&#39;&#39;; 
        array_unshift($xs,$n); 
    } 
    return $xs; 
}

 echo upper(&#39;12121&#39;);

?>

以上是基础转换代码,在这个基础上进行二次改造:

<?php
/**
* 转换大写金额
* $num 数字类型
*/
function inttod($num) {
    //判断$num是否存在
    if(!$num) return &#39;零圆&#39;;
    //保留小数点后两位
    $num = round($num, 2);
    //将浮点转换为整数
    $tem_num = $num * 100;
    //判断数字长度
    $tem_num_len = strlen($tem_num);
    if($tem_num_len > 14) {
        return &#39;数字太大了吧,有这么大的金钱吗&#39;;
    }
    //大写数字
    $dint = array(&#39;零&#39;, &#39;壹&#39;, &#39;贰&#39;, &#39;叁&#39;, &#39;肆&#39;, &#39;伍&#39;, &#39;陆&#39;, &#39;柒&#39;, &#39;捌&#39;, &#39;玖&#39;);
    //大写金额单位
    $danwei = array(&#39;仟&#39;, &#39;佰&#39;, &#39;拾&#39;, &#39;亿&#39;, &#39;仟&#39;, &#39;佰&#39;, &#39;拾&#39;, &#39;万&#39;, &#39;仟&#39;, &#39;佰&#39;, &#39;拾&#39;, &#39;圆&#39;);
    $danwei1 = array(&#39;角&#39;, &#39;分&#39;);
    //空的变量用来保存转换字符串
    $daxie = &#39;&#39;;
    //分割数字,区分圆角分
    list($left_num, $right_num) = explode(&#39;.&#39;, $num);
    //计算单位长度
    $danwei_len = count($danwei);
    //计算分割后的字符串长度
    $left_num_len = strlen($left_num);
    $right_num_len = strlen($right_num);
    //循环计算亿万元等
    for($i = 0; $i < $left_num_len; $i++) {
        //循环单个文字
        $key_ = substr($left_num, $i, 1);
        //判断数字不等于0或数字等于0与金额单位为亿、万、圆,就返回完整单位的字符串
        if($key_ !== &#39;0&#39; || ($key_ == &#39;0&#39; && ($danwei[$danwei_len - $left_num_len + $i] == &#39;亿&#39; || $danwei[$danwei_len - $left_num_len + $i] == &#39;万&#39; || $danwei[$danwei_len - $left_num_len + $i] == &#39;圆&#39;))) {
            $daxie = $daxie . $dint[$key_] . $danwei[$danwei_len - $left_num_len + $i];
        } else {
            //否则就不含单位
            $daxie = $daxie . $dint[$key_];
        }
    }
    //循环计算角分
    for($i = 0; $i < $right_num_len; $i++) {
        $key_ = substr($right_num, $i, 1);
        if($key_ > 0) {
            $daxie = $daxie . $dint[$key_] . $danwei1[$i];
        }
    }
    //计算转换后的长度
    $daxie_len = strlen($daxie);
    //设置文字切片从0开始,utf-8汉字占3个字符
    $j = 0;
    while($daxie_len > 0) {
        //每次切片两个汉字
        $str = substr($daxie, $j, 6);
        //判断切片后的文字不等于零万、零圆、零亿、零零
        if($str == &#39;零万&#39; || $str == &#39;零圆&#39; || $str == &#39;零亿&#39; || $str == &#39;零零&#39;) {
            //重新切片
            $left = substr($daxie, 0, $j);
            $right = substr($daxie, $j + 3);
            $daxie = $left . $right;
        }
        $j += 3;
        $daxie_len -= 3;
    }
    return &#39;人民币&#39; . $daxie . &#39;整&#39;;
}
$result = inttod(99090909090.19);
var_dump($result);

想了解更多编程学习,敬请关注php培训栏目!

以上是php 金额大小写如何转换的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)