首页 > 编程语言 >php 金额大写转换

php 金额大写转换

时间:2023-09-19 17:44:06浏览次数:27  
标签:right 转换 danwei len num 大写 php daxie left

在别人的基础上加以更改

function numberToChinese($num)
{
//判断$num是否存在
if(!$num) return '零圆';
//保留小数点后两位
$num = round($num, 2);
//将浮点转换为整数
$tem_num = $num * 100;
//判断数字长度
$tem_num_len = strlen($tem_num);
if($tem_num_len > 14) {
return '数字太大了吧,有这么大的金钱吗';
}

//大写数字
$dint = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
//大写金额单位
$danwei = array('仟', '佰', '拾', '亿', '仟', '佰', '拾', '万', '仟', '佰', '拾', '圆');
$danwei1 = array('角', '分');

//空的变量用来保存转换字符串
$daxie = '';
$numStr= explode('.', $num);
//分割数字,区分圆角分

$left_num =isset($numStr[0])?$numStr[0]:'';
$right_num =isset($numStr[1])?$numStr[1]:'';
// list($left_num, $right_num)

//计算单位长度
$danwei_len = count($danwei);
//计算分割后的字符串长度
$left_num_len = strlen($left_num)??0;
$right_num_len = strlen($right_num)??0;

//循环计算亿万元等
for($i = 0; $i < $left_num_len; $i++) {
//循环单个文字
$key_ = substr($left_num, $i, 1);
//判断数字不等于0或数字等于0与金额单位为亿、万、圆,就返回完整单位的字符串
if($key_ !== '0' || ($key_ == '0' && ($danwei[$danwei_len - $left_num_len + $i] == '亿' || $danwei[$danwei_len - $left_num_len + $i] == '万' || $danwei[$danwei_len - $left_num_len + $i] == '圆'))) {
$daxie = $daxie . $dint[$key_] . $danwei[$danwei_len - $left_num_len + $i];
} else {
//否则就不含单位
$daxie = $daxie . $dint[$key_];
}
}

//循环计算角分
for($i = 0; $i < $right_num_len; $i++) {
$key_ = substr($right_num, $i, 1);
if($key_ > 0) {
$daxie = $daxie . $dint[$key_] . $danwei1[$i];
}
}

//计算转换后的长度
$daxie_len = strlen($daxie);
//设置文字切片从0开始,utf-8汉字占3个字符
$j = 0;
while($daxie_len > 0) {
//每次切片两个汉字
$str = substr($daxie, $j, 6);
//判断切片后的文字不等于零万、零圆、零亿、零零
if($str == '零万' || $str == '零圆' || $str == '零亿' || $str == '零零') {
//重新切片
$left = substr($daxie, 0, $j);
$right = substr($daxie, $j + 3);
$daxie = $left . $right;
}
$j += 3;
$daxie_len -= 3;
}

return '人民币' . $daxie . '整';
}

 

使用: numberToChinese(500.00)

 

标签:right,转换,danwei,len,num,大写,php,daxie,left
From: https://www.cnblogs.com/xiaoyueya/p/17715307.html

相关文章

  • Java List和Array之间的转换
    一.Array转为List1.实现方法:java中数组转list使用Arrays.asList(T...a)方法。1.publicclassArray2List{2.publicstaticvoidmain(String[]args){3.listA=Arrays.asList("dog","cat","cow");4.String[]strs={"dog",&qu......
  • 微信小程序转换成uniapp项目
    1.把微信小程序转换成uniapp项目1.1 安装miniprogram-to-uniapp插件打开cmd,运行【npminstallminiprogram-to-uniapp-g】进行安装,因为这个包是工具,要求全局都能使用,所以需要-g进行全局安装。npminstallminiprogram-to-uniapp-g如果运行npm报错,请先安装Node.js,下载地......
  • PHP实现断点续传大文件
    一、断点续传原理所谓断点续传,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。不使用断点续传get/down.ziphttp/1.1accept:image/gif,image/x-xbitmap,ima......
  • 反序列化之PHP
    PHP反序列化原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导 致代码执行、SQL注入、目录遍历等不可控后果。在反序列化的过程中自动触发了某些魔术 方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。 php序列化与反序列化的关键......
  • 基于php+webuploader的大文件分片上传,支持断点续传,带进度条
    基于php+webuploader的大文件分片上传,带进度条,支持断点续传(刷新、关闭页面、重新上传、网络中断等情况)。文件上传前先检测该文件是否已上传,如果已上传提示“文件已存在”,如果未上传则直接上传。视频上传时会根据设定的参数(分片大小、分片数量)进行上传,上传过程中会在目标文件夹......
  • 30 秒内使用 Laf 将文本转换为萝莉音并大声朗诵
    laf一键创建云函数首先打开你的Laf在创建云函数这里看到推荐模板。没错就是函数模板,如果你点击更多模板就会发现。哦,我的老天鹅呀快看看这是什么,这就是刚刚出炉的云函数市场,这是个什么概念呢,任何人都可以在这里分享自己的云函数,别人如果想要使用只需要点一下立马同步到你的......
  • 【原创】Nat的一次实际需求(第三方访问我方,双转换)
                                                         Nat的一次疑惑实际需求:第三方访问我方某台测试服务器(含端口),通过专线的形式进行数据传输。逻辑拓扑如下:......
  • face_net模型转换为libtorch的心得
    Facenetdemo:https://www.cnblogs.com/muyisun/p/13338098.html如果要转为libtorch可调用,应该使用torch.jit中的script或trace。script会保留一些控制流,trace则会擦除。可以使用.code查看过程。torch_trace_model=torch.jit.script(model,input)#scripttraceprint(torch_......
  • php-fpm高占用cpu处理
    最近服务器经常发现php-fpm进程cpu总数时不时就100%,提高cpu核数也还是一样废话不多说,直接说解决方案:一、先说说php-fpm三种子进程的管理方式pm=static静态,始终保持一个固定数量的子进程,这个数由(pm.max_children)定义,这种方式很不灵活,也通常不是默认的。pm=dynamic动态,在更......
  • [FAQ] Git远程仓库想把目录大写改为小写,windows本地不识别的的处理
     通过四步操作:1.先把忽略大小写设为false,即区分大小写gitconfigcore.ignorecasefalse2.拷贝出来备份那几个大写的目录,随后分支上操作删除,提交到远程。3.备份出来的目录改为小写,拷贝到代码分支的目录里,提交到远程。4.恢复成原来的设置gitconfigcore.ignorecasetrue......