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 Mssql操作简单封装支持存储过程
Dec 11 PHP
PHP 图像尺寸调整代码
May 26 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
Nov 01 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
php解压文件代码实现php在线解压
Feb 13 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 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中进行身份认证
2006/10/09 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
PDO::setAttribute讲解
2019/01/29 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
vue跨域解决方法
2017/10/15 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
python实现指定ip端口扫描方式
2019/12/17 Python
python 异步async库的使用说明
2020/05/04 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
2015年高考寄语或鼓励的话
2015/03/23 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
大学生实习证明
2015/06/16 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
Python 视频画质增强
2022/04/28 Python