思路:将数字分割成4个一组, 1111 //一千一百一是一
<?php
$int2=901010001;
function transfer(string $int){
var_dump($int);
$int=strrev($int);
$flags=['4'=>'兆','3'=>'亿','2'=>'万','1'=>''];
$shu=['0'=>'','1'=>'壹','2'=>'贰','3'=>'叁','4'=>'肆','5'=>'伍','6'=>'陆','7'=>'柒','8'=>'捌','9'=>'玖'];
$wei=['4'=>'仟','3'=>'佰','2'=>'拾','1'=>''];
$newstr='';
for ($i=0; $i < strlen($int); $i++) {
if($i%4==3 && $i>0){
$newstr = $newstr.$int[$i].",";
}else{
$newstr =$newstr.$int[$i];
}
}
$newstr=strrev($newstr);
$newstr=trim($newstr,',');
$newint=explode(',', $newstr);
$need=[];
$newflags=[];
for ($i=count($newint); $i >0 ; $i--) {
array_push($newflags,($flags[$i]));
}
var_dump($newflags);
// array (size=3)
// 0 => string '亿' (length=3)
// 1 => string '万' (length=3)
// 2 => string '' (length=0)
var_dump($newint);
// array (size=3)
// 0 => string '9' (length=1)
// 1 => string '0101' (length=4)
// 2 => string '0001' (length=4)
foreach ($newint as $key => $value) {
$lenth=$flag=strlen($value);
for ($j=0; $j <$lenth; $j++,$flag--) {
$need[]=($shu[$value[$j]]);
if ($value[$j]=='0' && $j+1!=$lenth && $value[$j+1]!=0) {
//如果是数字0 并且 下一个元素存在 并且下一个数字不是0
$need[]='零';
}
if ($value[$j]!=0) {
//当前数字不是0取位
$need[]=($wei[$flag]);
}
}
$need[]=($newflags[$key]);
}
var_dump(implode('', $need));
// 玖亿零壹佰零壹万零壹
}
transfer($int2);