直接上实例,写到 千亿上了。
php" id="highlighter_648343">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
/** * @author ja颂 * @param [num] $num [数字] * @return [string] [string] */ function numToWord( $num ) { $chiNum = array ( '零' , '一' , '二' , '三' , '四' , '五' , '六' , '七' , '八' , '九' ); $chiUni = array ( '' , '十' , '百' , '千' , '万' , '亿' , '十' , '百' , '千' ); $chiStr = '' ; $num_str = (string) $num ; $count = strlen ( $num_str ); $last_flag = true; //上一个 是否为0 $zero_flag = true; //是否第一个 $temp_num = null; //临时数字 $chiStr = '' ; //拼接结果 if ( $count == 2) { //两位数 $temp_num = $num_str [0]; $chiStr = $temp_num == 1 ? $chiUni [1] : $chiNum [ $temp_num ]. $chiUni [1]; $temp_num = $num_str [1]; $chiStr .= $temp_num == 0 ? '' : $chiNum [ $temp_num ]; } else if ( $count > 2){ $index = 0; for ( $i = $count -1; $i >= 0 ; $i --) { $temp_num = $num_str [ $i ]; if ( $temp_num == 0) { if (! $zero_flag && ! $last_flag ) { $chiStr = $chiNum [ $temp_num ]. $chiStr ; $last_flag = true; } } else { $chiStr = $chiNum [ $temp_num ]. $chiUni [ $index %9] . $chiStr ; $zero_flag = false; $last_flag = false; } $index ++; } } else { $chiStr = $chiNum [ $num_str [0]]; } return $chiStr ; } $num = 150; echo numToWord( $num ); |
方法二:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
<?php /** * 数字转换为中文 * @param string|integer|float $num 目标数字 * @param integer $mode 模式[true:金额(默认),false:普通数字表示] * @param boolean $sim 使用小写(默认) * @return string */ function number2chinese( $num , $mode = true, $sim = true){ if (! is_numeric ( $num )) return '含有非数字非小数点字符!' ; $char = $sim ? array ( '零' , '一' , '二' , '三' , '四' , '五' , '六' , '七' , '八' , '九' ) : array ( '零' , '壹' , '贰' , '叁' , '肆' , '伍' , '陆' , '柒' , '捌' , '玖' ); $unit = $sim ? array ( '' , '十' , '百' , '千' , '' , '万' , '亿' , '兆' ) : array ( '' , '拾' , '佰' , '仟' , '' , '萬' , '億' , '兆' ); $retval = $mode ? '元' : '点' ; //小数部分 if ( strpos ( $num , '.' )){ list( $num , $dec ) = explode ( '.' , $num ); $dec = strval ( round ( $dec ,2)); if ( $mode ){ $retval .= "{$char[$dec['0']]}角{$char[$dec['1']]}分" ; } else { for ( $i = 0, $c = strlen ( $dec ); $i < $c ; $i ++) { $retval .= $char [ $dec [ $i ]]; } } } //整数部分 $str = $mode ? strrev ( intval ( $num )) : strrev ( $num ); for ( $i = 0, $c = strlen ( $str ); $i < $c ; $i ++) { $out [ $i ] = $char [ $str [ $i ]]; if ( $mode ){ $out [ $i ] .= $str [ $i ] != '0' ? $unit [ $i %4] : '' ; if ( $i >1 and $str [ $i ]+ $str [ $i -1] == 0){ $out [ $i ] = '' ; } if ( $i %4 == 0){ $out [ $i ] .= $unit [4+ floor ( $i /4)]; } } } $retval = join( '' , array_reverse ( $out )) . $retval ; return $retval ; } //实例调用===================================================== $num = '0123648867.789' ; echo $num , '<br>' ; //普通数字的汉字表示 echo '普通:' ,number2chinese( $num ,false), '' ; echo '<br>' ; //金额汉字表示 echo '金额(简体):' ,number2chinese( $num ,true), '' ; echo '<br>' ; echo '金额(繁体):' ,number2chinese( $num ,true,false); |
以上所述就是本文的全部内容了,希望大家能够喜欢。