视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php数字如何转换大写
2020-11-02 18:47:29 责编:小采
文档


PHP数字金额转换大写金额

代码如下:

/**
 * 将数值金额转换为中文大写金额
 * @param $amount float 金额(分)
 * @param $type int 补整类型,0:到角补整;1:到元补整
 * @return mixed 中文大写金额
 */
function convertAmountToCn($amount, $type = 1) {
 if ($amount == 0) {
 return "零元整";
 }
 if (strlen($amount) > 12) {
 return "不支持万亿及更高金额";
 }

 // 预定义中文转换的数组
 $digital = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
 // 预定义单位转换的数组
 $position = array('仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟', '佰', '拾', '元');

 // 将金额的数值字符串拆分成数组
 $amountArr = explode('.', $amount);

 // 将整数位的数值字符串拆分成数组
 $integerArr = str_split($amountArr[0], 1);
 // 将整数部分替换成大写汉字
 $result = '人民币';
 $integerArrLength = count($integerArr);
 $positionLength = count($position);
 for($i=0; $i<$integerArrLength; $i++){
 $result = $result . $digital[$integerArr[$i]]. $position[$positionLength - $integerArrLength + $i];
 }

 // 如果小数位也要转换
 if($type == 1){
 // 将小数位的数值字符串拆分成数组
 $decimalArr = str_split($amountArr[1], 1);
 // 将小数部分替换成大写汉字
 $result = $result . $digital[$decimalArr[0]] . '角' . $digital[$decimalArr[1]] . '分';
 }else{
 $result = $result . '整';
 }

 return $result;
}

经过考虑后, 发现之前写的代码不够严谨, 特此补充了一份新版的代码

/**
 * 将数值金额转换为中文大写金额
 * @param $amount float 金额(支持到分)
 * @param $type int 补整类型,0:到角补整;1:到元补整
 * @return mixed 中文大写金额
 */
function convertAmountToCn($amount, $type = 1) {
 // 判断输出的金额是否为数字或数字字符串
 if(!is_numeric($amount)){
 return "要转换的金额只能为数字!";
 }

 // 金额为0,则直接输出"零元整"
 if($amount == 0) {
 return "人民币零元整";
 }

 // 金额不能为负数
 if($amount < 0) {
 return "要转换的金额不能为负数!";
 }

 // 金额不能超过万亿,即12位
 if(strlen($amount) > 12) {
 return "要转换的金额不能为万亿及更高金额!";
 }

 // 预定义中文转换的数组
 $digital = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
 // 预定义单位转换的数组
 $position = array('仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟', '佰', '拾', '元');

 // 将金额的数值字符串拆分成数组
 $amountArr = explode('.', $amount);

 // 将整数位的数值字符串拆分成数组
 $integerArr = str_split($amountArr[0], 1);

 // 将整数部分替换成大写汉字
 $result = '人民币';
 $integerArrLength = count($integerArr); // 整数位数组的长度
 $positionLength = count($position); // 单位数组的长度
 for($i = 0; $i < $integerArrLength; $i++) {
 // 如果数值不为0,则正常转换
 if($integerArr[$i] != 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) {
 // 将小数位的数值字符串拆分成数组
 $decimalArr = str_split($amountArr[1], 1);
 // 将角替换成大写汉字. 如果为0,则不替换
 if($decimalArr[0] != 0){
 $result = $result . $digital[$decimalArr[0]] . '角';
 }
 // 将分替换成大写汉字. 如果为0,则不替换
 if($decimalArr[1] != 0){
 $result = $result . $digital[$decimalArr[1]] . '分';
 }
 }else{
 $result = $result . '整';
 }
 return $result;
}

很多相关知识,请访问PHP中文网!

下载本文
显示全文
专题