前段时间在 segmentfault 社区看到一个很有意思的题目

数字转中文(PHP语言描述)

一开始我是这样写的

$str = 1237124129124;

//将一个字符串转换为数组

$arr = str_split((string)$str,1);

$cns = ['零','一','二','三','四','五','六','七','八','九'];

foreach ($arr as $key) {

echo $cns[$key];

}

//一二三七一二四一二九一二四

然后题主回复我说:根据你这个我只能做出来十以内的

开始我的理解太过简单,所以又写了一下

思路是这样的

第一次写,已经可以把阿拉伯数字翻译为中文数字,但是真正的数都是有数阶(个、十、百、千)的。

显然简单的翻译还不能称之为数

那么思路就来了,计算出每个数的权位,加上权位不就可以了吗

123 翻译为中文就是 一二三

下一步就是加上权位

一位数是个

二位数是十

三位数是千

...

以此类推

这样不就很明显用数组表示最合适不过了

['','十','百','千','万','十','百','千','亿','十','百','千']

这样遍历的时候简单合并不就Ok 了吗?

先不管对错,试一下(以123为例)

遍历

1=>一 +

2=>二 + 十

3=>三 + 百

结果为 一二十三百

很明显,权位是反的

有两种解决思路,第一种先判断位数,计算数阶,第二种是反向遍历,从个位遍历起

第二种

php 中 先翻转 123 => 321

遍历之后输出 一十二百三

反转字符串即为正解

PHP 中有很多字符串反转函数,但是中文反转会乱码,使用mb_substr()函数解决中文乱码

完整代码如下

function IntToString($num)

{

$cns = ['零','一','二','三','四','五','六','七','八','九'];

$ws = ['','十','百','千','万','十','百','千','亿','十','百','千'];

$str = '';

foreach (array_reverse(str_split((string)$num,1)) as $key => $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;

}

echo IntToString(231231251237);

二千三百一十二亿三千一百二十五万一千二百三十七

这次直接支持支持千亿级别的数,修改 ws 数组可以无限扩充

修改$cns数组让这个函数支持,数字大写,支持人民币结算

第一种

//数阶数组

$rank = ['','十','百','千','万','十','百','千'];

//中文数字数组

$cns = ['零','一','二','三','四','五','六','七','八','九'];

//数字转数组

$arr = str_split((string)$num,1);

//获取数阶数组

$nowRank = array_reverse(array_slice($rank,0,strlen($num)));

foreach ($arr as $key => $value) {

echo $cns[$value].$nowRank[$key];

}

中华语言博大精深

如果输入14 会输出 一十四,而实际我们只会读为十四;

如果输入1000会输出一千零百零十零,而实际我们只会读为一千;

如果输入1020会输出一千零百二十零,而实际我们只会读为一千零二十;

下一步需要解决这些问题,如果解决了,会更新此文

好了,不多说了,接着搬砖了

php语言里阿拉伯数字,阿拉伯数字转中文数字思路及解决算法(以PHP语言描述)...相关推荐

  1. python练习题--阿拉伯数字转换成中文数字

    python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...

  2. 计算机语言安装不上,安装程序包的语言不受系统支持,详细教您如何解决Office2010安装时语言不受系统支持...

    由于不小心意外中断了卸载过程,结果怎么也卸载不掉office 2010了,但是文件关联彻底损坏了,导致用低版本也无法打开,而是遇到了安装时语言不受系统支持的情况,下面,小编就给大家分享解决Office ...

  3. js 阿拉伯数字转化为中文数字

    作为一个中国人,总会在某个瞬间觉得中文是那样的美,中华文化是那样的博大精深.当书写数字时,都不忘了使用中文式的数字,比如写单据,章节名时,写上中文数字显得高大上一些.在这里,就和大家分享一下,如何通过 ...

  4. c语言int输入1输出60000,数字的秘密问题分析(C语言)

    数字的秘密问题分析(C语言) 原创---子衿兄 1 [问题] 在数字王国中,人人都有一个号码,人人想个号码对自己意味着什么.国一他不是你做了很多个盒子,每个盒子拥有一个号码.人们需要通过一定的方法才能 ...

  5. c语言动画原理,动画详解十大经典排序算法(C语言版)

    排序算法是程序员必备的基础知识,弄明白它们的原理和实现很有必要.本文中将通过非常细节的动画展示出算法的原理,配合代码更容易理解. 概述 由于待排序的元素数量不同,使得排序过程中涉及的存储器不同,可将排 ...

  6. 易语言mysql防破解_易语言程序真正防止破J的思路以及解决案例

    该方案相对于上两种,更加nc一点儿,通过"云代码"这三个字,顾名思义,就是将部分逻辑代码放在云端.由服务器代理处理,并将结果返回给客户Duan,客户Duan使用处理结果实现某些功能 ...

  7. 大写汉字转阿拉伯数字c语言,阿拉伯数字转中文数字方法详解(C++实现)

    阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法. 中文计数有一个特点,就是"零"的使用变化多端.阿拉伯数字中数字的 ...

  8. 【工具封装】Python 实现将阿拉伯数字 === 转换成中文大写数字

    一.序言:   工具封装第四弹,阿拉伯数字 ===> 转换成 ===> 中文大写数字,喜欢就赶紧收藏+点赞+关注吧 !!! ---- Nick.Peng 二.实现代码如下: #!/usr/ ...

  9. cn2.php中文,Python使用cn2an实现中文数字与阿拉伯数字的相互转换

    工作中经常遇到阿拉伯数字转换称为中文数字或者大写金额,在网上搜了下,cn2an口碑较好,遂进行了一番学习. 安装 pip install cn2an 依赖库为setuptools.PyYAML 查看版 ...

最新文章

  1. GPU、FPGA芯片成为增强机器学习能力的“左膀右臂”
  2. oracle中怎样查询用户权限
  3. Vmware学习虚拟机操作时遇到的问题和解决
  4. Machine Learning week 3 quiz : Regularization
  5. SAP应用搜索分页的实现原理
  6. 使用FizzBu​​zz和Mockito进行单元测试
  7. 16.Python略有小成(内置模块Ⅱ)
  8. pyhton学习-1
  9. 怎样去构建一个优质的Docker容器镜像
  10. 【深度优先搜索】计蒜客:最大蛋糕(最大连通块)
  11. 手机App性能测试工具Genymotion安卓模拟器使用和简介
  12. 【智衡跨境电商shopee运营】Shopee平台流量入口有哪些?
  13. Transformer-based模型的综述:AMMUS : A Survey of Transformer-based Pretrained Models in NLP
  14. js中字符串按照汉字拼音排序
  15. linux最全网络监控命令梳理及评测
  16. 背景图页面缩小会变形_CSS背景图拉伸不变形
  17. python七段数码管绘制实验报告_python实现七段数码管和倒计时效果
  18. 2022-2028全球与中国质地食品成分市场现状及未来发展趋势
  19. 分享几个在记账本中快速删除收支明细的技巧
  20. html中数字输入框,HTML “input number数字”输入控件简介说明

热门文章

  1. loss问题——工作中对出现的loss问题描述与解决参考
  2. linux python2.7 protobuf_在ubuntulinux上安装tensorflow,protobuf版本issu
  3. c语言输出名人名言大全,编程语言之父6大精辟编程名言
  4. finalize java,Java中Object对象finalize方法详细解析
  5. MKVToolNix v8.7.0
  6. 羽毛球馆可以做哪些活动方案?
  7. android wear2.0 更新,android wear2.0下载更新发布 更新内容详情
  8. oracle中fn_getpy函数,SQL Server根据汉字笔划和取得拼音首字母进行排序
  9. 老百姓计算机系,《老百姓装机宝典》,最新万元以内电脑组装配置,免费收藏!...
  10. MindManager软件制作的思维导图如何用幻灯片演示