zoukankan      html  css  js  c++  java
  • PHP中文播报金额

      由于项目中使用极光推送需要播报用户消费的金额,所以写了以下代码。

    前提1:播报的音频

    前提2:极光推送

    解决问题1:中文金额的播报

    解决问题2:个十千百万亿及零的播报

    如果有更好的方法请留言,大家互相学习哈!

    上代码:

    private function duqu($total_fee = 0) {
      if (empty($total_fee)) return false;
      // 设置0十百千万亿
      $array = array('0'=>'0', '1'=>'10', '2'=>'29', '3'=>'32', '4'=>'30', '5'=>'10,30', '6'=>'29,30', '7'=>'32,30', '8'=>'31');
      // 将金额通过点分割成数组
      $number = explode('.', $total_fee);
      $data = array();
      foreach ($number as $k => $v) {
        $arr = str_split($v);
        // 点前的运算
        if ($k == 0) {
          $flag = $kk = 0;
          krsort($arr);
          foreach ($arr as $k1 => $v1) {
            $kk++;
            if ($kk == 1 && $v1 != 0) {
              $data[$k][] = $v1;
            }else if ($v1 != 0) {
              if ( $flag != 0 && !empty($data[$k])) {
                $data[$k][] = $array[0];
                $flag = 0;
              } else if ($flag != 0 && empty($data[$k])) {
                $flag = 0;
              }
              if ($v1 == 1 && $k1 == 0 && ($kk-1 == 1)) {
                $data[$k][] = $array[$kk-1];
              } else {
                $data[$k][] = $v1.','.$array[$kk-1];
              }
            } else {
              if ($k1 < 8) {
                $flag = $flag + 1;
              }
            }
         }
         krsort($data[$k]);
        } else { // 点后的运算
          foreach ($arr as $k1 => $v1) {
            $data[$k][] = $v1;
          }
        }
        $data[$k] = implode(',',$data[$k]);
      }
      unset($arr);
      unset($array);
      unset($flag);
      unset($kk);
      // 添加點并合併
      if(empty($data[0])) {
        $data[0] = '0,11';
      } else if (!empty($data[1])){
        $data[0] .= ',11';
      }
      $res = implode(',',$data);
      $res .= ',27'; //元
      return $res;
    }

  • 相关阅读:
    Chrome浏览器的使用技巧
    时刻谨记
    ElasticSearch入门
    资源收集记录(技术提高)
    【操作系统之六】Linux常用命令之less
    【操作系统之五】Linux常用命令之grep
    【操作系统之四】Linux常用命令之awk
    【操作系统之三】Linux下进程间通信-IPC(Inter-Process Communication)
    【操作系统之二】死锁
    【操作系统之一】进程、线程、协程
  • 原文地址:https://www.cnblogs.com/sxiangyues/p/7831865.html
Copyright © 2011-2022 走看看