Home  >  Article  >  php教程  >  整型数字转汉字,如: [101] ->[一百零一]

整型数字转汉字,如: [101] ->[一百零一]

WBOY
WBOYOriginal
2016-06-07 11:44:091162browse

昨天发布了一段汉字转数字的代码,应该网友的要求,再写一个反转的算法,经过简单测试没发现问题,现在把代码分享出来,感兴趣的朋友可以来测试一下,呵呵,如果有更好的算法,也请拿出来分享下,最好是原创代码哦!
test2();<br> <br> /**<br>  * 方法测试<br>  */<br> function test2() {<br>     echo '333030.22  =>  ' . IntToCn(333030.22) . '<hr>'; // 三十三万三千零三十<br>     echo '1111  => ' . IntToCn(1111.0001) . '<hr>'; // 一千一百一十一<br>     echo '101010101 => ' . IntToCn(101010101) . '<hr>'; // 一亿一百零一万零一百零一<br> }<br> <br> /**<br>  * 数字转中文<br>  * @param Int $num 需要解析的数字<br>  * @param String $string 初始值<br>  * @return String<br>  * @author Anyon Zou <zoujingli><br>  * @date 2013-08-22 01:20<br>  */<br> function IntToCn($num, $string = array()) {<br>     if (!is_numeric($num)) {<br>         return $num;<br>     }<br>     $splits = array('100000000' => '亿', '10000' => '万');<br>     $chars = array('10000' => '万', '1000' => '千', '100' => '百', '10' => '十', '1' => '', '0' => '零');<br>     $ints = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十');<br> <br>     /*<br>      * 拆分整数与小数<br>      */<br>     $nums = explode('.', "{$num}");<br>     $num = $nums[0];<br>     // 处理小数<br>     $dou = array();<br>     if (!empty($nums[1])) {<br>         foreach (str_split("{$nums[1]}") as $n) {<br>             if (is_numeric($n)) {<br>                 $dou[] = $ints[intval($n)];<br>             }<br>         }<br>     }<br>     unset($nums);<br> <br>     foreach ($splits as $step => $split) {<br>         $floor = $step > 0 ? floor($num / intval($step)) : '0';<br>         if ($floor > 0) {<br>             $string[] = IntToCn($floor) . $split;<br>             $num = fmod($num, $step);<br>         }<br>     }<br>     $string2 = array();<br>     foreach ($chars as $step => $char) {<br>         $floor = $step > 0 ? floor($num / intval($step)) : '0';<br>         if ($floor > 0) {<br>             $string[] = $string2[] = $ints[$floor] . $char;<br>             $num = fmod($num, $step);<br>         } else if ((count($string2) > 0 || (count($string) > 0 && $step != '10000')) && $string2[count($string) - 1] != $ints[0] && $num > 0) {<br>             $string[] = $ints[0];<br>         }<br>     }<br>     if (!empty($dou)) {<br>         $string = array_merge($string, array('点'), $dou);<br>     }<br>     return join('', $string);<br> }</zoujingli>测试结果
整型数字转汉字,如: [101] ->[一百零一]

AD:真正免费,域名+虚机+企业邮箱=0元

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn