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 相关文章推荐
Discuz板块横排显示图片的实现方法
May 28 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
网站用php实现paypal整合方法
Nov 28 PHP
php中unserialize返回false的解决方法
Sep 22 PHP
laravel安装和配置教程
Oct 29 PHP
浅析php创建者模式
Nov 25 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
浅谈PHP7中的一些小技巧
May 29 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 短链接算法收集与分析
2011/12/30 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
快速保存网页中所有图片的方法
2006/06/23 Javascript
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
brook javascript框架介绍
2011/10/10 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
Python解析xml中dom元素的方法
2015/03/12 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
Python PIL库图片灰化处理
2020/04/07 Python
Jupyter加载文件的实现方法
2020/04/14 Python
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
民事起诉状范文
2015/05/19 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python