前段时间在segmentfault社区看到一个很有意思的题目DigitaltoChinese(PHP语言说明)。一开始我是这样写的一+2=>二+十3=>三+一百结果一二三百。很明显,权位颠倒了。解决思路有两种,第一种是先判断位数,并计算序号,第二种是反向遍历,从个位数开始遍历,PHP中的第二种先翻转123=>321遍历然后输出一个反转的字符串1203PHP中有很多字符串反转函数,但是中文反转会出现乱码。使用mb_substr()函数解决中文乱码。完整代码如下$value)$str.=$ws[$key].$cns[$value];$temp='';//反转字符串for($i=strlen($str)-1;$i>=0;$i--)$temp.=mb_substr($str,$i,1,'utf-8');return$temp;}echoIntToString(231231251237);////2312亿,311251237这次直接支持千亿数,修改ws数组可以无限扩展修改$cns数组使这个函数支持,数字大写,支持第一类人民币结算//numberorderArray$rank=['','ten','hundred','thousand','thousand','ten','hundred','千'];//中文数字数组$cns=['零','一','二','三','四','五','六','七','八','Nine'];//转数数组$arr=str_split((string)$num,1);//获取rank数组$nowRank=array_reverse(array_slice($rank,0,strlen($num)));foreach($arras$key=>$value){echo$cns[$value].$nowRank[$key];}中文博大精深。如果你输入14,它会输出14,但实际上我们只会读成14;如果你输入1000,它会输出1110个零,但实际上我们只会读成14。读作一千;如果你输入1020,它会输出1120,但实际上我们只会读成1020;下一步就是解决这些问题,如果解决了,本文会更新,不多说了,然后移至原地址:https://blog.codefun.cn/blog/...
