<?php
/**
* 金额转换为中文大写金额接口 PHP接口源代码
*
* 接口说明:PHP 金额转换为中文大写金额,如1200转成:叁万叁仟叁佰叁拾叁元
*
* 最后修改:2024-10-12 17:14:02
*
* @author dogstar www.yesapi.cn
*
* 来源:https://open.yesapi.cn/apicode/8879.html
*/
function ($params, $di) {
$amount = $params['amount'];
$isround = true; // 是否四舍五入,默认是
$type = 0; // 补整类型,0:到角补整;1:到元补整
if (!is_numeric($amount)) {
return "要转换的金额只能为数字!";
}
$amount = sprintf("%.2f", $isround ? round($amount, 2) : $amount);
if ($amount == 0) {
return "零元整";
}
if ($amount < 0) {
return "要转换的金额不能为负数!";
}
if (strlen("$amount") > 12) { // 金额不能超过万亿,即12位
return "要转换的金额不能为万亿及更高金额!";
}
$digital = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; // 预定义中文转换的数组
$position = ['仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟', '佰', '拾', '元']; // 预定义单位转换的数组
$amountArray = explode('.', "$amount"); // 将金额的数值字符串拆分成数组
$integerArr = str_split($amountArray[0], 1); // 将整数位的数值字符串拆分成数组
// 将整数部分替换成大写汉字
$result = '';
$integerArrLength = count($integerArr); // 整数位数组的长度
$positionLength = count($position); // 单位数组的长度
for ($i = 0; $i < $integerArrLength; $i++) {
if ($integerArr[$i] != 0) { // 如果数值不为0,则正常转换
$result = $result . $digital[$integerArr[$i]] . $position[$positionLength - $integerArrLength + $i];
} else { // 如果数值为0, 且单位是亿,万,元这三个的时候,则直接显示单位
if (($positionLength - $integerArrLength + $i + 1) % 4 == 0) {
$result = $result . $position[$positionLength - $integerArrLength + $i];
}
}
}
// 如果小数位也要转换
if ($type == 0) {
$decimalArray = str_split($amountArray[1], 1); // 将小数位的数值字符串拆分成数组
if ($decimalArray[0] != 0) { // 将角替换成大写汉字. 如果为0,则不替换
$result = $result . $digital[$decimalArray[0]] . '角';
}
if ($decimalArray[1] != 0) { // 将分替换成大写汉字. 如果为0,则不替换
$result = $result . $digital[$decimalArray[1]] . '分';
}
} else {
$result = $result . '整';
}
return $result;
}
在线运行
金额转换为中文大写金额接口 - 免费接口源码库
持续更新中…… 免费使用,一键生成你的API
+ 复制到我的接口(请先登录,支持在线开发API)
预览接口发布效果
查看开发教程