php转为数值,php 将数值转化为中文描述

`

header("Content-type:text/html;charset=utf-8");

function replace($str){

$str += 0; //去除前面的0;

$trans = function($num){

$hj = str_replace(array(0,1,2,3,4,5,6,7,8,9,'.'), array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖','点'), $num);

return $hj;

};

$length = strlen($str);

$arr = str_split($str) ;

for ($i=$length-1; $i >= 0; $i--) {

$g[] = $arr[$i];

}

krsort($g);

$arr = $g;

// 个十百千万十万百万千万亿

// 0 1 2 3 4 5 6 7 8

$get = '';

for ($i=$length-1; $i >= 0; $i--) {

$f = intval(floor(($i)/4));

$g = ($i)%4;

$num = $trans($arr[$i]);

$juge = 9;

//判断是上一个 和 目前数值是否同时为零,加上判断目前数值是否是标准单位

if(isset($arr[$i+1]) && $arr[$i+1] == 0 && $arr[$i] == 0 && $g != 0){

if(isset($arr[$i+1]) && ($i+1)%4 == 0){ //判断上一个数值是否为标准单位,是的话,继续往下执行,不跳出(处理上一个和目前数值都为零时)

}else{

continue;

}

}

// 判断是上一个 和 目前数值是否同时为零,加上判断上一个数值是否是标准单位,不是标准单位,因为零已经在上一个加入,所以$get就不再添加描述,

// 倘若是标准单位,而且上一个 和 目前数值不同时为零,则添加描述

if(isset($arr[$i+1]) && $arr[$i+1] == 0 && $arr[$i] == 0 && ($i+1)%4 != 0){

$juge = 0;

}else{

$get .= $num;

if($arr[$i] == 0){

$juge = 0;

}else{

$juge = 9;

}

}

if($g == 0 && $juge == 0){// 当目前数值为标准单位,而且上一个描述为“零”时,则删除掉前面的“零”

$get = mb_substr($get, 0,-1,'utf-8');

}

if($arr[$i] == 0 && $g != 0){//如果目前数值为0,而且不为标准单位,则跳出,不做描述

continue;

}

if($g == 0){

switch ($f) {//标准单位

case '0': $get .= ''; break;

case '1': $get .= '万'; break;

case '2': $get .= '亿'; break;

case '3': $get .= '兆'; break;

case '4': $get .= '京'; break;

case '5': $get .= '垓'; break;

default:break;

}

}else{

switch ($g) {//标量单位

case '1': $get .= '拾'; break;

case '2': $get .= '百'; break;

case '3': $get .= '千'; break;

default:break;

}

}

}

return $get;

}

$str='15006004007';

echo "

";

$hg = replace($str);

echo $hg;

`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值