将金额由数字型表示法转为汉字表示法

将金额由数字型表示法转为汉字表示法

复制代码
<?php
function cny($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("",_cny_map_unit(str_split($ns1),$grees)),""));
    $ret=implode("",array_reverse(_cny_map_unit($ret,$cnyunits)));
    return str_replace(array('零零零','零零'), array('零','零'), str_replace(array_keys($cnums),$cnums,$ret));
}
function _cny_map_unit($list,$units)
{
    $ul=count($units);
    $xs=array();
    foreach (array_reverse($list) as $x)
    {
        $l=count($xs);
        if ($x!="0" || !($l%4)) $n=($x=='0'?"":$x).(@$units[($l-1)%$ul]);
        else $n=is_numeric(@$xs[0][0])?$x:"";
        array_unshift($xs,$n);
    }
    return $xs;
}
?>
复制代码

 执行转换 var_dump(cny(1245635.35)); 的结果是

posted @   李照耀  阅读(463)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示