素材牛VIP会员
数字变为文字
 ha***00  分类:PHP代码  人气:1154  回帖:5  发布于6年前 收藏

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

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

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

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

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

求大神....

 标签:php

讨论这个帖子(5)垃圾回帖将一律封号处理……

Lv4 码徒
阵***香 交互设计师 6年前#1

这帖子正解 阿拉伯数字转中文数字

Lv4 码徒
gu***un UI设计师 6年前#2

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

<?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...

Lv5 码农
阿***7 产品经理 6年前#3

为啥不用键值对的方式

$arr = [ 1=>'一', 2=>'二' ];
Lv6 码匠
su***an JAVA开发工程师 6年前#4

$cns = ['零','一','二','三','四','五','六','七','八','九','十','十一'];
写多点,./

Lv5 码农
38***38 职业无 6年前#5

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

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取