数字变为文字

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

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

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

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

 一二三四五六七八九十十一十二
 

求大神....

阅读 5.1k
5 个回答

太闲了,,,,,,,,,,,,,,,,,,,,,,

<?php

$str = 1237124129124;

//将一个字符串转换为数组
$arr = str_split((string)$str,1);

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

foreach ($arr as $key) {
    echo $cns[$key];
}

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

6月13日更新
支持千亿级别的数,修改 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);
////二千三百一十二亿三千一百二十五万一千二百三十七

附上思路
https://segmentfault.com/a/11...

为啥不用键值对的方式

$arr = [ 1=>'一', 2=>'二' ];

思路:阿拉伯数字转中文大写,不少案例可适当参考下!

推荐问题
宣传栏