入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

实用函数-php数字转为汉字金额

创建时间:2015-04-19 投稿人: 浏览次数:1789
<?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);

?>

运行截图:



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。