如果您想将整数转换为英文单词字符串,例如 29 -> twenty-nine,那么这里有一个函数可以做到这一点。
关于 fmod() 的使用说明
我使用了浮点数 fmod() 而不是 % 运算符,因为 % 会将操作数转换为 int,从而破坏 [-2147483648, 2147483647] 范围之外的值。
我没有费心处理“billion”,因为这个词的意思是 10e9 或 10e12,具体取决于你问的是谁。
如果参数不表示整数,则该函数返回“#”。
<?php
$nwords = array( "零", "一", "二", "三", "四", "五", "六", "七",
"八", "九", "十", "十一", "十二", "十三",
"十四", "十五", "十六", "十七", "十八",
"十九", "二十", 30 => "三十", 40 => "四十",
50 => "五十", 60 => "六十", 70 => "七十", 80 => "八十",
90 => "九十" );
function int_to_words($x) {
global $nwords;
if(!is_numeric($x))
$w = '#';
else if(fmod($x, 1) != 0)
$w = '#';
else {
if($x < 0) {
$w = '负 ';
$x = -$x;
} else
$w = '';
if($x < 21) $w .= $nwords[$x];
else if($x < 100) { $w .= $nwords[10 * floor($x/10)];
$r = fmod($x, 10);
if($r > 0)
$w .= '-'. $nwords[$r];
} else if($x < 1000) { $w .= $nwords[floor($x/100)] .' 百";
$r = fmod($x, 100);
if($r > 0)
$w .= ' 零". int_to_words($r);
} else if($x < 1000000) { $w .= int_to_words(floor($x/1000)) .' 千";
$r = fmod($x, 1000);
if($r > 0) {
$w .= ' ';
if($r < 100)
$w .= '零";
$w .= int_to_words($r);
}
} else { $w .= int_to_words(floor($x/1000000)) .' 百万";
$r = fmod($x, 1000000);
if($r > 0) {
$w .= ' ';
if($r < 100)
$word .= '零";
$w .= int_to_words($r);
}
}
}
return $w;
}
?>
用法
<?php
echo '当前有 '. int_to_words($count) . ' 位成员登录。';
?>