PHP 에는 숫자를 편리하게 포맷팅할 수 있는 number_format 이라는 내장 함수가 있습니다.


number_format 을 화폐 단위 표시할때 사용해도 되지만 화폐의 경우 $ 같은 통화 표시를 같이 해주는게 필요하며 PHP 에서는 이를 위해서 money_format 이라는 함수를 제공합니다.


사용법은 number_format()과 다르므로 주의해야 합니다. 예로 첫번째 파라미터가 포맷 문자열이고 두번째가 포맷팅할 숫자입니다.


locale 설정따라 결과가 다를 수 있겠지만 아래 예제는 소숫점 2자리까지 표시하고(3자리는 반올림) 천 단위 구분자로 , 를 찍어서 표시합니다.

money_format 사용법

<?php

$num = 12345678.2354;

echo money_format('%.2n', $num);

//  "12345678.24"
PHP

locale 설정이 안 되어 있으면 위와 같이 통화 심볼없이 숫자만 표시됩니다.


문제는 각국의 통화 심볼이 모두 다르므로 if 문으로 처리하는 것 보다는 locale을 설정하고 이를 참고해서 처리하는 것이 좋습니다.


locale 설정

<?php

$num = 12345678.2354;

// 일본 통화로 변경. 모든 locale 설정을 변경하려면 LC_ALL 을 사용
setlocale (LC_MONETARY, 'ja_JP.UTF-8');

echo money_format('%.2n', $num);

// 원화로 변경
setlocale (LC_MONETARY, 'ko_KR.UTF-8');
echo money_format('%.2n', $num);
PHP


해당 locale 에 맞게 숫자를 포맷팅(천 단위 표시)하고 통화 심볼대신 문자(KRW)를 표시하려면 %i 를 사용하면 됩니다.

money_format 사용법

<?php

$num = 12345678.2354;

echo money_format('%i', $num);

//  "KRW12,345,678"
PHP

Ref