PHP实现人民币金额转换成大写中文(附完整源码)
<?php
/**
* 人民币金额转换成大写中文
* @param float $number 要转换的金额数字
* @return string 转换后的大写中文字符串
*/
function number_to_chinese($number) {
$fraction = ['角', '分'];
$digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
$unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
$ret = '';
if ($number == 0) {
return '零元';
}
$numbers = explode('.', $number);
if (count($numbers) > 1) {
$integer_part = $numbers[0];
$fraction_part = $numbers[1];
} else {
$integer_part = $number;
$fraction_part = '';
}
// 转换整数部分
for ($i = 0; $i < strlen($integer_part); $i++) {
$p = strlen($integer_part) - $i - 1;
$temp = $integer_part[$i];
if ($temp == '0') {
if ($p == 0 || (0 < $p && $p % 4 == 0)) {
$ret .= $digit[$temp];
}
} else {
$ret .= $digit[$temp] . $unit[0][floor($p / 4)] . ($p % 4 < 3 ? $unit[1][$p % 4] : '');
}
}
// 添加小数部分
if ($fraction_part != '') {
$ret .= '点';
for ($i = 0; $i < strlen($fraction_part); $i++) {
$ret .= $digit[$fraction_part[$i]];
}
}
return $ret;
}
// 使用示例
$number = 12345.67;
echo number_to_chinese($number); // 输出: 壹万二千三百肆拾伍元陆角柒分