喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [原创] 通过数字获得他们的中文读法  
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
通过数字获得他们的中文读法



<?php
/*
程序用法:通过数字获得他们的中文读法
程序设计:飘枫
创建时间:2007 11 5
完成时间:20分钟
版权随便,转贴请保留原地址:[url=http://www.cxxsba.cn]http://www.cxxsba.cn[/url] 欢迎大家看小说 :loveliness: 
*/
$num 123421232;
echo 
tocnupper($num);//用法
function tocnupper($str)
{
 if(!
$str){return '';}
 
$str strrev($str);
 switch(
strlen($str))
 {
  case 
17:
   
$res format_num_upper($str[16])."京";
  case 
16:
   
$res.= format_num_upper($str[15])."千";
  case 
15:
   
$res.= format_num_upper($str[14])."百";
  case 
14:
   
$res.= format_num_upper($str[13])."十";
  case 
13:
   
$res.= format_num_upper($str[12])."兆";
  case 
12:
   
$res.= format_num_upper($str[11])."千";
  case 
11:
   
$res.= format_num_upper($str[10])."百";
  case 
10:
   
$res.= format_num_upper($str[9])."十";
  case 
9:
   
$res.= format_num_upper($str[8])."亿";
  case 
8:
   
$res.= format_num_upper($str[7])."千";
  case 
7:
   
$res.= format_num_upper($str[6])."百";
  case 
6:
   
$res.= format_num_upper($str[5])."十";
  case 
5:
   
$res.= format_num_upper($str[4])."万";
  case 
4:
   
$res.= format_num_upper($str[3])."千";
  case 
3:
   
$res.= format_num_upper($str[2])."百";
  case 
2:
   
$res.= format_num_upper($str[1])."十";
  case 
1:
   
$res.= format_num_upper($str[0]);
 }
 return 
$res;
}
function 
format_num_upper($str)
{
 return 
str_replace(array(0,1,2,3,4,5,6,7,8,9),array("零","一","二","三","四","五","六","七","八","九"),$str);
}
?>
2007-11-5 12:14 PM#1
查看资料  Blog  发短消息  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 山东phper有多少
如果是 2008 怎么读?



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2007-11-6 03:09 PM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
sorrowboy
新手上路
Rank: 1


UID 69924
精华 0
积分 34
帖子 30
金钱 34 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-20
状态 离线
[推荐阅读] 都嚼些啥?
将你的代码改进了一下:

<?php
function format_num_upper($numb){
    
$numb intval($numb);
    if (
$numb>|| $numb<0) return '';
    
$str = array("零","一","二","三","四","五","六","七","八","九");
    return 
$str[$numb];
}
?>
你做一个10000次的循环就可以发现,用正则替换的时间比查表慢

我的本本上测原来的是7.xxxxx秒,用查表的话是3.xxxxx秒

<?php
/*
程序用法:通过数字获得他们的中文读法
程序设计:飘枫
创建时间:2007 11 5
完成时间:20分钟
版权随便,转贴请保留原地址:[url=http://www.cxxsba.cn]http://www.cxxsba.cn[/url] 欢迎大家看小说 :loveliness:
*/
function tocnupper($str)
{
    if(!
$str){return '';}
    
$str strrev($str);
    switch(
strlen($str))
    {
        case 
17:
            
$res format_num_upper($str[16])."京";
        case 
16:
            
$res.= format_num_upper($str[15])."千";
        case 
15:
            
$res.= format_num_upper($str[14])."百";
        case 
14:
            
$res.= format_num_upper($str[13])."十";
        case 
13:
            
$res.= format_num_upper($str[12])."兆";
        case 
12:
            
$res.= format_num_upper($str[11])."千";
        case 
11:
            
$res.= format_num_upper($str[10])."百";
        case 
10:
            
$res.= format_num_upper($str[9])."十";
        case 
9:
            
$res.= format_num_upper($str[8])."亿";
        case 
8:
            
$res.= format_num_upper($str[7])."千";
        case 
7:
            
$res.= format_num_upper($str[6])."百";
        case 
6:
            
$res.= format_num_upper($str[5])."十";
        case 
5:
            
$res.= format_num_upper($str[4])."万";
        case 
4:
            
$res.= format_num_upper($str[3])."千";
        case 
3:
            
$res.= format_num_upper($str[2])."百";
        case 
2:
            
$res.= format_num_upper($str[1])."十";
        case 
1:
            
$res.= format_num_upper($str[0]);
    }
    return 
$res;
}
/*
function format_num_upper($str)
{
    return str_replace(array(0,1,2,3,4,5,6,7,8,9),array("零","一","二","三","四","五","六","七","八","九"),$str);
}
*/
function format_num_upper($numb){
    
$numb intval($numb);
    if (
$numb>|| $numb<0) return '';
    
$str = array("零","一","二","三","四","五","六","七","八","九");
    return 
$str[$numb];
}
function 
getNowTime(){
    
$t explode(' ',microtime());
    return (
$t[0]+$t[1]);
}
$startTime getNowTime();
$num 12345678901234567;
for (
$i=0;$i<10000;$i++){
    
//$num++;
    
tocnupper($num);//用法
}
$usedTime getNowTime() - $startTime;
echo 
$usedTime;
?>
2007-11-10 10:52 PM#3
查看资料  发短消息  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] 〓〖选择飞宇SF一条龙〗◆〖当GM原来可以这样简单〗◆

呵呵。谢谢提醒啊!
2007-11-11 11:15 AM#4
查看资料  Blog  发短消息  顶部
 
nawsber
新手上路
Rank: 1



UID 99840
精华 0
积分 10
帖子 10
金钱 10 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-10-14
状态 离线
[推荐阅读] 专业IDC 安全 稳定 高速 你还需要什么?
这种方法相对来说比较简单
2007-12-2 03:18 PM#5
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.037083 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP