阿拉伯转中文 php,阿拉伯数字转中文

好久没写了,最近刚好用到一个财务上的金额由数字转换为中文的内容,写了个函数实现,记录下:

class MoneyConstConfig

{

/**

* 金额数字中文映射

*/

public static $NUM_CH_MAP = array(

0 => '零',

1 => '壹',

2 => '贰',

3 => '叁',

4 => '肆',

5 => '伍',

6 => '陆',

7 => '柒',

8 => '捌',

9 => '玖',

);

/**

* 金额层次中文映射

*/

public static $FINANCE_UNIT_MAP = array(

0 => '分',

1 => '角',

2 => '圆',

3 => '拾',

4 => '佰',

5 => '仟',

6 => '万',

7 => '拾',

8 => '佰',

9 => '仟',

10 => '亿',

11 => '拾',

);

}

'', // 仟万

* '8' => '', // 佰万

* '7' => '', // 拾万

* '6' => '', // 万

* '5' => '', // 仟

* '4' => '', // 佰

* '3' => '', // 拾

* '2' => '', // 圆

* '1' => '', // 角

* '0' => '', // 分

* );

*/

public static function ticketFinanceChDesc($sourceNum) [67/1580]

{

$sourceNum = number_format($sourceNum, 2, '.', ''); // 保证金额是精确到分

$numArr = self::parseNumToArr($sourceNum);

if (false !== ($key = array_search('.', $numArr))) {

unset($numArr[$key]);

}

$rnumArr = array_reverse($numArr);

$data = array();

$i = 0;

foreach ($rnumArr as $num) {

$data[$i++] = $num;

}

if ($i < self::MAX_FINANCE_LEN) {

$data[] = self::FINANCE_SYMBOL;

}

$data = array_pad($data, self::MAX_FINANCE_LEN, ''); // 高位用空字符占位

$result = array_reverse($data);

return $result;

}

[43/1580]

/**

* financeNumToCh

*

* @param double $sourceNum

* @static

* @access public

* @return string $chAmount

*/

public static function financeNumToCh($sourceNum)

{

$sourceNum = number_format($sourceNum, 2, '.', ''); // 保证金额是精确到分

$numArr = self::parseNumToArr($sourceNum);

if (false !== ($key = array_search('.', $numArr))) {

unset($numArr[$key]);

}

$amount = array();

$numArrRev = array_reverse($numArr);

$i = 0;

foreach ($numArrRev as $num) {

$amount[$i++] = $num;

}

$amount = array_reverse($amount, true); // 这里再一次反转目的是保证key 的顺序

$chAmount = self::convertNumArrToChStr($amount);

return $chAmount;

}

/** [15/1580]

* convertNumArrToChStr 将数字数组转换位中文数组

*

* @param array $numArr 待转换的数字数组

* @static

* @access public

* @return string $chStr

*/

public static function convertNumArrToChStr($numArr)

{

$data = array();

$exists0 = false; // 是否存在0

$chStr = '';

$unitMap = array_flip(MoneyConstConfig::$FINANCE_UNIT_MAP);

$yuan = $unitMap[self::YUAN_POINT];

$wan = $unitMap[self::WAN_POINT];

$yi = $unitMap[self::YI_POINT];

foreach ($numArr as $key => $num) {

if ($num != 0) {

if ($exists0 === true) {

$chStr .= '零';

$exists0 = false;

}

$chStr .= MoneyConstConfig::$NUM_CH_MAP[$num] . MoneyConstConfig::$FINANCE_UNIT_MAP[$key];

} else {

$exists0 = true;

}

if ($key == $yuan) {

$chStr = rtrim($chStr, self::YUAN_POINT);

$chStr .= self::YUAN_POINT;

} elseif ($key == $wan) {

$chStr = rtrim($chStr, self::WAN_POINT);

$chStr .= self::WAN_POINT;

} elseif ($key == $yi) {

$chStr = rtrim($chStr, self::YI_POINT);

$chStr .= self::YI_POINT;

}

}

return $chStr;

}

}

以上就介绍了阿拉伯数字转中文,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值