2013. 5. 2. 20:55

숫자를 한글 원 단위로 변경하는 함수

숫자를 한글 원단위로 바꿔주는 함수가 필요해서 만들어 보았다.

만들다보니 두가지 방법으로 구현을 하게 되었는데 둘다 4자리 기준으로 구분하는건 동일하다.


전자는 php 기본함수인 str_split로 4자리씩 나누는 방식으로 먼저 4자리로 끈어지도록 맨 앞에 모자라는 자릿수만 큼 0 을 붙인후에 str_split로 나누는 방식이고


후자는 길이에 따라 뒤에서 4자리씩 substr로 잘라나오는 방식이다.


두개를 만들어 놓으니 어느게 더 효울적일까 해서 100회씩 반복한후 평균 실행 시간 측정을 해보았는데


전자는 0.0022....... 초가 걸리고 후자는 0.0024....... 초가 걸려서 전자가 더 효율 적인 방식이라고 할 수 있겠다.


function number2won($num) { if(!ctype_digit($num)) $num = (string)$num; $won = array('', '만', '억', '조', '경', '해'); $rtn = ''; $len = strlen($num); $mod = $len % 4; if($mod) {         $mod = 4 - $mod;

$num = str_pad($num, $len + $mod, '0', STR_PAD_LEFT);     } $arr = str_split($num, 4); for($i=0,$cnt=count($arr);$i<$cnt;$i++) { if($tmp = (int)$arr[$i]) $rtn .= $tmp.$won[$cnt - $i - 1]; } return $rtn; } function number2won2($num) { if(!ctype_digit($num)) $num = (string)$num; $won = array('', '만', '억', '조', '경', '해'); $rtn = ''; $len = strlen($num); for($i=0,$cnt=ceil($len/4);$i<$cnt;$i++) { $spos = $len - ($i + 1) * 4; $epos = 4; if($spos < 0) { $epos += $spos; $spos = 0; } if($tmp = (int)substr($num, $spos, $epos)) $rtn = $tmp.$won[$i].$rtn; } return $rtn; }