将你的代码改进了一下:
<?php
function format_num_upper($numb){
$numb = intval($numb);
if ($numb>9 || $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>9 || $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;
?>