由于项目中使用极光推送需要播报用户消费的金额,所以写了以下代码。
前提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;
???}
PHP中文播报金额
原文地址:http://www.cnblogs.com/sxiangyues/p/7831865.html