<?php
// 阿拉伯数字转中文大写金额
function NumToCNMoney($num, $retval = false, $mode = true, $sim = true)
{
if (! is_numeric($num))
return '含有非数字非小数点字符!';
$char = $sim ? array(
'零',
'一',
'二',
'三',
'四',
'五',
'六',
'七',
'八',
'九'
) : array(
'零',
'壹',
'贰',
'叁',
'肆',
'伍',
'陆',
'柒',
'捌',
'玖'
);
$unit = $sim ? array(
'',
'十',
'百',
'千',
'',
'万',
'亿',
'兆'
) : array(
'',
'拾',
'佰',
'仟',
'',
'萬',
'億',
'兆'
);
if ($retval) {
$retval = $mode ? '元' : '点';
}else{
$retval="";
}
// 小数部分
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;
}
echo NumToCNMoney(10,false, false, false);
最后修改:2019 年 09 月 05 日
© 允许规范转载