php - 面试题,将100之内的数字中文转换..
PHP中文网
PHP中文网 2017-06-14 10:50:09
[PHP讨论组]

如何将快速将数字转为文字
比如说 1 => 一,2=> 二, ..., 15=》十五
我当前想的是把中文存到一个数组中

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

不过这样也太麻烦了 如何将输入数字转换为中文,有没有更简单的方式?

最终实现的结果是这样的:
输入 12
输出

 一二三四五六七八九十十一十二
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
淡淡烟草味
<?php
        $number=57;
        $arr=array(

                '1'    =>    '一',
                '2'    =>    '二',
                '3'    =>    '三',
                '4'    =>    '四',
                '5'    =>    '五',
                '6'    =>    '六',
                '7'    =>    '七',
                '8'    =>    '八',
                '9'    =>    '九',
                '10'    =>    '十',

            );
        if($number>10){
            //倍数
            $bs    =    (int)($number/10);
            //余数
            $ys    =    $number%10;
            echo $arr[$bs].$arr[10].$arr[$ys];

        }else{
            echo $arr[$number];

        }

    
过去多啦不再A梦

如果你能用文字将数字的转化过程描述清楚,那么写代码就是个翻译的过程。

算法其实是业务逻辑很奇怪的业务逻辑而已,重点在于分析这个业务逻辑

阿拉伯数字转中文数字,小学没毕业也会写,脑子里一定有一套方法去完成这个转化过程。所以这里的考察重点就是,对问题的抽象过程。要抽象的准确,首先得对问题本身有一个全面的分析了解,找出规律。比数字转化过程中,0什么时候叫十,什么时候叫零。这个过程,在脑子里执行的太自然了,以至于去分析它的情况,找出规律,都还是需要一定能力的。

推荐这篇文章,文章开始的分析就是抽象过程,对编程很重要

漂亮男人
$setnumber = 99;
        $chiNum = array('十','一','二','三','四','五','六','七','八','九','十');
        if($setnumber < 100 && $setnumber >= 1) {
            for($i = 1;$i<=$setnumber;$i++) {
                $setstrnumber = (string)$i;
                $count = strlen($setstrnumber);
                if($count == 1) {
                    echo $chiNum[$i]."<br/>"; 
                } else {
                    $setchinum = '';
                    if($setstrnumber[0] != 1) {                      
                        $setchinum .= $chiNum[$setstrnumber[0]];
                    }
                    $setchinum .= $chiNum[0];
                    
                    if(intval($setstrnumber[1]) != 0) {
                        $setchinum .= $chiNum[$setstrnumber[1]];
                    }
                    echo $setchinum."<br/>";
                }
            }
        }
伊谢尔伦

支持千亿级别的数,修改 ws 数组可以无限扩充,修改cns数组为繁体可以用于人民币大写

<?php

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);
////二千三百一十二亿三千一百二十五万一千二百三十七

附上思路
/a/11...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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