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 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
php5中类的学习
Mar 28 PHP
php中的数组操作函数整理
Aug 18 PHP
认识并使用PHP超级全局变量
Jan 26 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 PHP
PHP小教程之实现双向链表
Jun 12 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
twig模板常用语句实例小结
Feb 04 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
php实现自动生成验证码的实例讲解
Nov 17 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
如何将数据从文本导入到mysql
2006/10/09 PHP
php编写简单的文章发布程序
2015/06/18 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
js实现小星星游戏
2020/03/23 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
Python中的引用和拷贝浅析
2014/11/22 Python
Python 自动补全(vim)
2014/11/30 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python-split()函数实例用法讲解
2020/12/18 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
C#面试常见问题
2013/02/25 面试题
年级组长自我鉴定
2014/02/22 职场文书
学生自我评语大全
2014/04/18 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
毕业论文致谢信
2015/05/14 职场文书