/**
* 將數值金額轉換爲中文大寫金額
* @param $amount float 金額(支持到分)
* @param $type int 補整類型,0:到角補整;1:到元補整
* @return mixed 中文大寫金額
*/
function convertAmountToCn($amount, $type = 1) {
// 判斷輸出的金額是否爲數字或數字字符串
if(!is_numeric($amount)){
return "要轉換的金額只能爲數字!";
}
// 金額爲0,則直接輸出"零元整"
if($amount == 0) {
return "人民幣零元整";
}
// 金額不能爲負數
if($amount < 0) {
return "要轉換的金額不能爲負數!";
}
// 金額不能超過萬億,即12位
if(strlen($amount) > 12) {
return "要轉換的金額不能爲萬億及更高金額!";
}
// 預定義中文轉換的數組
$digital = array('零', '壹', '貳', '叄', '肆', '伍', '陸', '柒', '捌', '玖');
// 預定義單位轉換的數組
$position = array('仟', '佰', '拾', '億', '仟', '佰', '拾', '萬', '仟', '佰', '拾', '元');
// 將金額的數值字符串拆分成數組
$amountArr = explode('.', $amount);
// 將整數位的數值字符串拆分成數組
$integerArr = str_split($amountArr[0], 1);
// 將整數部分替換成大寫漢字
$result = '人民幣';
$integerArrLength = count($integerArr); // 整數位數組的長度
$positionLength = count($position); // 單位數組的長度
for($i = 0; $i < $integerArrLength; $i++) {
// 如果數值不爲0,則正常轉換
if($integerArr[$i] != 0){
$result = $result . $digital[$integerArr[$i]] . $position[$positionLength - $integerArrLength + $i];
}else{
// 如果數值爲0, 且單位是億,萬,元這三個的時候,則直接顯示單位
if(($positionLength - $integerArrLength + $i + 1)%4 == 0){
$result = $result . $position[$positionLength - $integerArrLength + $i];
}
}
}
// 如果小數位也要轉換
if($type == 0) {
// 將小數位的數值字符串拆分成數組
$decimalArr = str_split($amountArr[1], 1);
// 將角替換成大寫漢字. 如果爲0,則不替換
if($decimalArr[0] != 0){
$result = $result . $digital[$decimalArr[0]] . '角';
}
// 將分替換成大寫漢字. 如果爲0,則不替換
if($decimalArr[1] != 0){
$result = $result . $digital[$decimalArr[1]] . '分';
}
}else{
$result = $result . '整';
}
return $result;
}