关于php数字转大写人民币的代码完善)

php中文网
发布: 2016-07-29 09:01:18
原创
1507人浏览过

之前看到一个php版本的把数字变为大写人民币的代码,以前没有打开display_errors,后来为了提高代码质量,把它打开了,发现了几处错误,看着很不爽,现在在一个系统里面应用了,部署到生产环境,发现不得劲,今天抽点时间完善了下,修改的地方注释了。

<span><span>function</span><span>_cny_map_unit</span><span>(<span>$list</span>,<span>$units</span>)</span> {</span><span>$ul</span>=count(<span>$units</span>); 
    <span>$xs</span>=<span>array</span>(); 
    <span>foreach</span> (array_reverse(<span>$list</span>) <span>as</span><span>$x</span>) {
        <span>$l</span>=count(<span>$xs</span>); 
        <span>if</span> (<span>$x</span>!=<span>"0"</span> || !(<span>$l</span>%<span>4</span>)) <span>$n</span>=(<span>$x</span>==<span>'0'</span>?<span>''</span>:<span>$x</span>).(<span>isset</span>(<span>$units</span>[(<span>$l</span>-<span>1</span>)%<span>$ul</span>])?<span>$units</span>[(<span>$l</span>-<span>1</span>)%<span>$ul</span>]:<span>''</span>);
        <span>//之前为if ($x!="0" || !($l%4)) $n=($x=='0'?'':$x).($units[($l-1)%$ul]); </span><span>else</span><span>$n</span>=is_numeric(<span>$xs</span>[<span>0</span>][<span>0</span>])?<span>$x</span>:<span>''</span>; 
        array_unshift(<span>$xs</span>,<span>$n</span>); 
    } 
    <span>return</span><span>$xs</span>;
}
<span><span>function</span><span>cny</span><span>(<span>$ns</span>)</span> {</span><span>static</span><span>$cnums</span>=<span>array</span>(<span>"零"</span>,<span>"壹"</span>,<span>"贰"</span>,<span>"叁"</span>,<span>"肆"</span>,<span>"伍"</span>,<span>"陆"</span>,<span>"柒"</span>,<span>"捌"</span>,<span>"玖"</span>), 
        <span>$cnyunits</span>=<span>array</span>(<span>"圆"</span>,<span>"角"</span>,<span>"分"</span>), 
        <span>$grees</span>=<span>array</span>(<span>"拾"</span>,<span>"佰"</span>,<span>"仟"</span>,<span>"万"</span>,<span>"拾"</span>,<span>"佰"</span>,<span>"仟"</span>,<span>"亿"</span>); 
    <span>list</span>(<span>$ns1</span>,<span>$ns2</span>)=explode(<span>"."</span>,<span>$ns</span>,<span>2</span>); 
    <span>$ns2</span>=str_split(<span>$ns2</span>);<span>//此处为新增</span><span>if</span>(<span>isset</span>(<span>$ns2</span>[<span>1</span>]))
        <span>$ns2</span>=array_filter(<span>array</span>(<span>$ns2</span>[<span>1</span>],<span>$ns2</span>[<span>0</span>]));
    <span>else</span><span>$ns2</span>=array_filter(<span>array</span>(<span>$ns2</span>[<span>0</span>]));
        <span>//之前为$ns2=array_filter(array($ns2[1],$ns2[0])); </span><span>$ret</span>=array_merge(<span>$ns2</span>,<span>array</span>(implode(<span>""</span>,_cny_map_unit(str_split(<span>$ns1</span>),<span>$grees</span>)),<span>""</span>)); 
    <span>$ret</span>=implode(<span>""</span>,array_reverse(_cny_map_unit(<span>$ret</span>,<span>$cnyunits</span>))); 
    <span>$out</span>=str_replace(array_keys(<span>$cnums</span>),<span>$cnums</span>,<span>$ret</span>); 
    <span>if</span>(<span>$ns</span>==round(<span>$ns</span>))<span>$out</span>.=<span>"整"</span>;
    <span>return</span><span>$out</span>;
}
登录后复制

目前不再报错了,貌似逻辑对了。

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了关于php数字转大写人民币的代码完善),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号