博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php将数值转换文字输出。列:12345678 -> 一千二百三十四万五千六百七十八
阅读量:3898 次
发布时间:2019-05-23

本文共 2212 字,大约阅读时间需要 7 分钟。

php将数值转换文字输出(转自公司大佬!!!非常感谢!!!)

直接上代码:

= 1000000000 || $num < 0) {
return '';}$NUMBER_CH = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];$COL_CH = ['', '十', '百', '千', '万', '十', '百', '千', '亿']; $result = '';$numstr = strval($num);for ($j = 0; $j < strlen($numstr); $j++) {
if (intval($numstr[$j]) > 0) {
$result .= $NUMBER_CH[intval($numstr[$j])];$result .= $COL_CH[strlen($numstr) - $j - 1];} elseif ((strlen($numstr) - $j == 5) || (strlen($numstr) - $j == 9)) {
if (strrpos($result, $COL_CH[8]) != strlen($result) - strlen($COL_CH[8])) {
$result .= $COL_CH[strlen($numstr) - $j - 1];}} elseif (strrpos($result, $NUMBER_CH[0]) != strlen($result) - strlen($NUMBER_CH[0])) {
if (!empty($numstr[$j + 1])) {
$result .= $NUMBER_CH[0];}}}return $result;}echo getNumberCh(12345678);//这里的数值就是你要转换的值

上面代码输出就是:一千二百三十四万五千六百七十八

如果你想输出类似发票的大写文字,你只需替换这里的文字即可,下面是替换后的代码:

$NUMBER_CH = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '拾'];$COL_CH = ['', '拾', '佰', '仟', '萬', '拾', '佰', '仟', '亿'];

以上方法只能输出10亿以内的数字

下面的方法可以输出元角分的,并且数字可以到千兆的,一起来看一下吧!

1){
if($dec['0']!='0' && $dec['1']!='0' && $dec['1']!=null){
$retval .= "{
$char[$dec['0']]}角{
$char[$dec['1']]}分";}elseif($dec['0']!='0' && $dec['1']=='0'){
$retval .= "{
$char[$dec['0']]}角";}elseif($dec['0']=='0' && $dec['1']!='0' && $dec['1']!=null){
$retval .= "{
$char[$dec['1']]}分";}}else{
$retval .= "{
$char[$dec['0']]}角";}}else{
for($i = 0,$c = strlen($dec);$i < $c;$i++) {
$retval .= $char[$dec[$i]];}}}}//整数部分$str = $mode ? strrev(intval($num)) : strrev($num);for($i = 0,$c = strlen($str);$i < $c;$i++) {
$out[$i] = $char[$str[$i]];if($mode){
$out[$i] .= $str[$i] != '0'? $unit[$i%4] : '';if($i>1 and $str[$i]+$str[$i-1] == 0){
$out[$i] = '';}if($i%4 == 0){
$out[$i] .= $unit[4+floor($i/4)];}}}$retval = join('',array_reverse($out)) . $retval;return $retval;}$num = '12345678901234.050';//普通数字的汉字表示echo '普通:',number2chinese($num,false),'';echo '
'; //金额汉字表示echo '金额(简体):',number2chinese($num,true),'';echo '
';echo '金额(繁体):',number2chinese($num,true,false);?>

我在第二种方法上做了一些修正。之前输出是这样的,比如:如果数字是1.02,正常输出应该是壹元二分,但是程序却输出壹元贰角分,所以就有点问题了。现在修正后就正常了。

如果各位大佬有更好的方法,或者哪里书写有误,请联系本人,感谢!!!

转载地址:http://dsyen.baihongyu.com/

你可能感兴趣的文章
ACE之反应堆学习(一)
查看>>
apache配置
查看>>
快速精通FRAME
查看>>
msf反弹木马之免杀
查看>>
写一个简单的python爬虫程序,爬取一下百度图片
查看>>
简单Dos命令以及批处理
查看>>
使用python执行cmd命令
查看>>
利用python脚本实现一招断网
查看>>
10行代码教你用python进行Dos攻击
查看>>
完善了一点的爬虫
查看>>
sqli-labs-master通关手册
查看>>
想要远程获取对方的桌面?Python教你一招搞定!
查看>>
给你打个QQ电话就能知道你在哪,你敢信?
查看>>
pip换源_命令行下一步到位
查看>>
python调用笔记本摄像头
查看>>
永恒之蓝(ms17-010)漏洞复现,进行简单后渗透信息收集
查看>>
简单的Dos命令/一行代码实现恶意程序
查看>>
[极客大挑战 2019]LoveSQL 1
查看>>
[极客大挑战 2019]PHP
查看>>
[极客大挑战 2019]Http
查看>>