以下代码,目的是将1、2、3这种阿拉伯数字转化为 一,二,三这种汉字,并附带单位。
因为本人水平有限,所以实现的方法比较笨拙,也可能存在BUG,欢迎各位指正。
<?php
$arrayNumber = [
'0' => '零',
'1' => '一',
'2' => '二',
'3' => '三',
'4' => '四',
'5' => '五',
'6' => '六',
'7' => '七',
'8' => '八',
'9' => '九',
];
$arrayUnit = [
'0' => '',
'1' => '十',
'2' => '百',
'3' => '千',
'4' => '万',
'5' => '十',
'6' => '百',
'7' => '千',
'8' => '亿',
'9' => '十',
'10' => '百',
'11' => '千',
];
$number = (string)123456789;
$numberLength = strlen($number);
$s = 0;
$str = '';
// 如果是两位数
if($numberLength == 2 && $number[0] == 1){
if($number[1] == 0){
$str .= $arrayUnit[1];
}else{
$str .= $arrayUnit[1].$arrayNumber[$number[1]];
}
echo $str;
return $str;
}
// 不是两位数
for ($i=$numberLength; $i > 0; $i--) {
if($s == $numberLength - 1 && $number[$s] == 0){
}elseif($number[$s] == 0 && $number[$s+1] == 0){
//echo $s;
if( ( $numberLength - $s) == 5 && $numberLength < 9){
$str .= '万';
}
if( ($numberLength - $s) == 9 && $numberLength > 8){
$str .= '亿';
}
$s++;
}elseif($number[$s] == 0 && $number[$s+1] != 0){
if( ($numberLength - $s) == 5 ){
$str .= '万';
}elseif( ($numberLength - $s) == 9 && $numberLength > 8){
$str .= '亿';
}else{
$str .= $arrayNumber[$number[$s]];
}
$s++;
}else{
$str .= $arrayNumber[$number[$s]].$arrayUnit[$i-1];
$s++;
}
}
echo $str;
return $str;