• 技术文章 >后端开发 >PHP问题

    php 怎么将数字转换成英文

    藏色散人藏色散人2021-12-09 09:10:26原创589

    php将数字转换成英文的方法:1、创建一个PHP示例文件;2、通过“function umoney($num,$type="usd") {...}”方法将数字转换成英文即可。

    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。

    php 怎么将数字转换成英文?

    PHP 金额数字转换成英文

    找了很久,搜索的关键词总是词不达意似的。

    代码如下:

    <?php
    $num=1220.01;
    echo fmoney($num);//结果:1,220.21
    echo umoney($num);
    //结果:ONE THOUSAND AND TWO HUNDRED TWENTY DOLLARS AND TWENTY-ONE CENTS ONLY
    echo umoney($num,"rmb");
    //结果:ONE THOUSAND AND TWO HUNDRED TWENTY YUAN AND TWENTY-ONE FEN ONLY
    //define
    //格式化货币
    function fmoney($num) {
    $num=0+$num;
    $num = sprintf("%.02f",$num);
    if(strlen($num) <= 6) return $num;
    //从最后开始算起,每3个数它加一个","
    for($i=strlen($num)-1,$k=1, $j=100; $i >= 0; $i--,$k++) {
    $one_num = substr($num,$i,1);
    if($one_num ==".") {
    $numArray[$j--] = $one_num;
    $k=0;
    continue;
    }
    if($k%3==0 and $i!=0) {
    //如果正好只剩下3个数字,则不加','
    $numArray[$j--] = $one_num;
    $numArray[$j--] = ",";
    $k=0;
    } else {
    $numArray[$j--]=$one_num;
    }
    }
    ksort($numArray);
    return join("",$numArray);
    }
    function umoney($num,$type="usd") {
    global $numTable,$commaTable,$moneyType;
    //global $numTable;
    $numTable[0]="ZERO ";
    $numTable[1]="ONE ";
    $numTable[2]="TWO ";
    $numTable[3]="THREE ";
    $numTable[4]="FOUR ";
    $numTable[5]="FIVE ";
    $numTable[6]="SIX ";
    $numTable[7]="SEVEN ";
    $numTable[8]="EIGHT ";
    $numTable[9]="NINE ";
    $numTable[10]="TEN ";
    $numTable[11]="ELEVEN ";
    $numTable[12]="TWELVE ";
    $numTable[13]="THIRTEEN ";
    $numTable[14]="FOURTEEN ";
    $numTable[15]="FIFTEEN ";
    $numTable[16]="SIXTEEN ";
    $numTable[17]="SEVENTEEN ";
    $numTable[18]="EIGHTEEN ";
    $numTable[19]="NINETEEN ";
    $numTable[20]="TWENTY ";
    $numTable[30]="THIRTY ";
    $numTable[40]="FORTY ";
    $numTable[50]="FIFTY ";
    $numTable[60]="SIXTY ";
    $numTable[70]="SEVENTY ";
    $numTable[80]="EIGHTY ";
    $numTable[90]="NINETY ";
    $commaTable[0]="HUNDRED ";
    $commaTable[1]="THOUSAND ";
    $commaTable[2]="MILLION ";
    $commaTable[3]="MILLIARD ";
    $commaTable[4]="BILLION ";
    $commaTable[5]="????? ";
    //单位
    $moneyType["usd"]="DOLLARS ";
    $moneyType["usd_1"]="CENTS ONLY";
    $moneyType["rmb"]="YUAN ";
    $moneyType["rmb_1"]="FEN ONLY";
    if($type=="") $type="usd";
    $fnum = fmoney($num);
    $numArray = explode(",",$fnum);
    $resultArray = array();
    $k=0;
    $cc=count($numArray);
    for($i = 0; $i < count($numArray); $i++) {
    $num_str = $numArray[$i];
    //echo "<br>";
    //小数位的处理400.21
    if(eregi("\.",$num_str)) {
    $dotArray = explode(".",$num_str);
    if($dotArray[1] != 0) {
    $resultArray[$k++]=format3num($dotArray[0]+0);
    $resultArray[$k++]=$moneyType[strtolower($type)];
    $resultArray[$k++]="AND ";
    $resultArray[$k++]=format3num($dotArray[1]+0);
    $resultArray[$k++]=$moneyType[strtolower($type)."_1"];
    } else {
    $resultArray[$k++]=format3num($dotArray[0]+0);
    $resultArray[$k++]=$moneyType[strtolower($type)];
    }
    } else {
    //非小数位的处理
    if(($num_str+0)!=0) {
    $resultArray[$k++]=format3num($num_str+0);
    $resultArray[$k++]=$commaTable[--$cc];
    //判断:除小数外其余若不为零则加and
    for($j=$i; $j <= $cc; $j++) {
    //echo "<br>";
    //echo $numArray[$j];
    if($numArray[$j] !=0) {
    $resultArray[$k++]="AND ";
    break;
    }
    }
    }
    }
    }
    return join("",$resultArray);
    }
    function format3num($num) {
    global $numTable,$commaTable;
    $numlen = strlen($num);
    for($i = 0,$j = 0;$i < $numlen; $i++) {
    $bitenum[$j++] = substr($num,$i,1);
    }
    if($num==0) return "";
    if($numlen == 1) return $numTable[$num];
    if($numlen == 2) {
    if($num <= 20) return $numTable[$num];
    //第一位不可能零
    if($bitenum[1]==0) {
    return $numTable[$num];
    } else {
    return trim($numTable[$bitenum[0]*10])."-".$numTable[$bitenum[1]];
    }
    }
    //第一个不可能为零
    if($numlen == 3) {
    if($bitenum[1]==0 && $bitenum[2]==0) {
    //100
    return $numTable[$bitenum[0]].$commaTable[0];
    } elseif($bitenum[1]==0) {
    //102
    return $numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[2]];
    } elseif ($bitenum[2]==0) {
    //120
    return $numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[1]*10];
    } else {
    //123
    return $numTable[$bitenum[0]].$commaTable[0].trim($numTable[$bitenum[1]*10])."-".$numTable[$bitenum[2]];
    }
    }
    return $num;
    }
    ?>

    推荐学习:《PHP视频教程

    以上就是php 怎么将数字转换成英文的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php
    上一篇:php怎么获取几天后的时间戳 下一篇:php几千条数据怎么插入数据库
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• php二维数组怎么转换为字符串• php怎么将十六进制值转换为字符串• php 怎么转换成绝对路径• php怎么将数据转换为十六进制
    1/1

    PHP中文网