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开发大型项目的一点经验
Oct 09 PHP
配置PHP使之能同时支持GIF和JPEG
Oct 09 PHP
PHP 选项及相关信息函数库
Dec 04 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
php根据数据id自动生成编号的实现方法
Oct 16 PHP
PHP内置加密函数详解
Nov 20 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
php IP及IP段进行访问限制的代码
2008/12/17 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
layui使用label标签的方法
2019/09/14 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python的print用法示例
2014/02/11 Python
Python计算回文数的方法
2015/03/11 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
上课玩手机检讨书
2014/02/08 职场文书
超市商业计划书
2014/05/04 职场文书
青春演讲稿范文
2014/05/08 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
检讨书范文500字
2015/01/28 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL