中文数字的特点
- 每个计数数字都跟着一个权位,权位有:十、百、千、万、亿。
- 以“万”为小节,对应一个节权位,万以下没有节权位(例如”一千“)。
- 每个小节内部以“十百千”为权位独立计数。
- “十百千”不能连续出现,而“万”和“亿”作为节权位时可以和其他权位连用,如:“二十亿”。
中文数字对“零”的使用要满足以下三条规则
- 以10000为小节,小节的结尾即使是0,也不使用零,例如”一万“、”一百万四千“。
- 小节内两个非0数字之间要使用“零”,例如”一百零一“。
- 当小节的“千”位是0时,只要不是首小节,都要补“零”,例如“一万零九百九十九”,”九百万零五十“。
算法设计的一些说明:
- 对“零”的第三个规则,把检测放在循环的最前面并默认为false,可以自然的丢弃最高小节的加零判断。
- 把“十一”开头的“十一”改为“十”
代码示例
<?php
function numberToChinese(int $num)
{
$unit_section_pos = 0;
$chn_str = '';
$chn_num_char = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
$chn_unit_section = ["", "万", "亿"