php 把数字转换成汉字的代码


Posted in PHP onJuly 21, 2015

直接上实例,写到 千亿上了。

/**

* @author ja颂 
* 把数字1-1亿换成汉字表述,如:123->一百二十三
* @param [num] $num [数字]
* @return [string] [string]
*/
function numToWord($num)
{
$chiNum = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$chiUni = array('','十', '百', '千', '万', '亿', '十', '百', '千');

$chiStr = '';

$num_str = (string)$num;

$count = strlen($num_str);
$last_flag = true; //上一个 是否为0
$zero_flag = true; //是否第一个
$temp_num = null; //临时数字

$chiStr = '';//拼接结果
if ($count == 2) {//两位数
$temp_num = $num_str[0];
$chiStr = $temp_num == 1 ? $chiUni[1] : $chiNum[$temp_num].$chiUni[1];
$temp_num = $num_str[1];
$chiStr .= $temp_num == 0 ? '' : $chiNum[$temp_num]; 
}else if($count > 2){
$index = 0;
for ($i=$count-1; $i >= 0 ; $i--) { 
$temp_num = $num_str[$i];
if ($temp_num == 0) {
if (!$zero_flag && !$last_flag ) {
$chiStr = $chiNum[$temp_num]. $chiStr;
$last_flag = true;
}
}else{
$chiStr = $chiNum[$temp_num].$chiUni[$index%9] .$chiStr;

$zero_flag = false;
$last_flag = false;
}
$index ++;
}
}else{
$chiStr = $chiNum[$num_str[0]]; 
}
return $chiStr;
}

$num = 150;
echo numToWord($num);

方法二:

<?php
 /**
* 数字转换为中文
* @param  string|integer|float  $num  目标数字
* @param  integer $mode 模式[true:金额(默认),false:普通数字表示]
* @param  boolean $sim 使用小写(默认)
* @return string
*/
 function number2chinese($num,$mode = true,$sim = true){
    if(!is_numeric($num)) return '含有非数字非小数点字符!';
    $char    = $sim ? array('零','一','二','三','四','五','六','七','八','九')
    : array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
    $unit    = $sim ? array('','十','百','千','','万','亿','兆')
    : array('','拾','佰','仟','','?','?|','兆');
    $retval  = $mode ? '元':'点';
    //小数部分
    if(strpos($num, '.')){
        list($num,$dec) = explode('.', $num);
        $dec = strval(round($dec,2));
        if($mode){
            $retval .= "{$char[$dec['0']]}角{$char[$dec['1']]}分";
        }else{
            for($i = 0,$c = strlen($dec);$i < $c;$i++) {
                $retval .= $char[$dec[$i]];
            }
        }
    }
    //整数部分
    $str = $mode ? strrev(intval($num)) : strrev($num);
    for($i = 0,$c = strlen($str);$i < $c;$i++) {
        $out[$i] = $char[$str[$i]];
        if($mode){
            $out[$i] .= $str[$i] != '0'? $unit[$i%4] : '';
                if($i>1 and $str[$i]+$str[$i-1] == 0){
                $out[$i] = '';
            }
                if($i%4 == 0){
                $out[$i] .= $unit[4+floor($i/4)];
            }
        }
    }
    $retval = join('',array_reverse($out)) . $retval;
    return $retval;
 }
 //实例调用=====================================================
$num = '0123648867.789';
echo $num,'<br>';
 //普通数字的汉字表示
echo '普通:',number2chinese($num,false),'';
echo '<br>';
 //金额汉字表示
echo '金额(简体):',number2chinese($num,true),'';
echo '<br>';
echo '金额(繁体):',number2chinese($num,true,false);

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
几个php应用技巧
Mar 27 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
php处理restful请求的路由类分享
Feb 27 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
PHP内置的Math函数效率测试
Dec 01 PHP
php内存缓存实现方法
Jan 24 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
php实现短信发送代码
Jul 05 PHP
示例详解Laravel的注册重构
Aug 14 PHP
Yii2使用表单上传文件的实例代码
Aug 03 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
通过Email发送PHP错误的方法
Jul 20 #PHP
php实现编辑和保存文件的方法
Jul 20 #PHP
php数组生成html下拉列表的方法
Jul 20 #PHP
php生成过去100年下拉列表的方法
Jul 20 #PHP
PHP基于文件存储实现缓存的方法
Jul 20 #PHP
详解PHP错误日志的获取方法
Jul 20 #PHP
php实现网站顶踩功能的完整前端代码
Jul 19 #PHP
You might like
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python中Class类用法实例分析
2015/11/12 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Python csv模块使用方法代码实例
2019/08/29 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
详解Python模块化编程与装饰器
2021/01/16 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
华为python面试题
2016/05/03 面试题
2015年销售工作总结范文
2015/03/30 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
八年级语文教学反思
2016/03/03 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang