PHP의 localeconv() 함수는 현재 로케일(locale)에 설정된 숫자 및 통화 형식 정보를 연관 배열 형태로 반환하는 함수입니다. 이 함수는 다국어·다통화 환경에서 금액이나 숫자를 각 지역 규칙에 맞게 출력해야 할 때 특히 유용합니다.
localeconv()가 반환하는 주요 배열 요소는 다음과 같습니다.
- [decimal_point] – 소수점 문자
- [thousands_sep] – 천 단위 구분자
- [int_curr_symbol] – 국제 통화 코드 (예: USD)
- [currency_symbol] – 통화 기호 (예: $)
- [mon_decimal_point] – 통화용 소수점 문자
- [mon_thousands_sep] – 통화용 천 단위 구분자
- [positive_sign] – 양수 표시 문자
- [negative_sign] – 음수 표시 문자
- [int_frac_digits] – 국제 표준 소수 자릿수
- [frac_digits] – 지역 관례상 소수 자릿수
- [p_cs_precedes] – 양수에서 통화 기호가 숫자 앞에 위치하면 1(true), 뒤에 위치하면 0(false)
- [p_sep_by_space] – 양수와 통화 기호 사이에 공백이 있으면 1(true), 없으면 0(false)
- [n_cs_precedes] – 음수에서 통화 기호가 숫자 앞에 위치하면 1(true), 뒤에 위치하면 0(false)
- [n_sep_by_space] – 음수와 통화 기호 사이에 공백이 있으면 1(true), 없으면 0(false)
p_sign_posn / n_sign_posn – 부호 위치 옵션
[p_sign_posn]은 양수의 부호 표시 형식을 결정합니다.
- 0 – 숫자와 통화 기호 전체를 괄호로 감쌈
- 1 – + 기호가 숫자와 통화 기호 앞에 위치
- 2 – + 기호가 숫자와 통화 기호 뒤에 위치
- 3 – + 기호가 통화 기호 바로 앞에 위치
- 4 – + 기호가 통화 기호 바로 뒤에 위치
[n_sign_posn]은 음수에 대해 동일한 규칙으로 − 기호의 위치를 결정합니다.
grouping / mon_grouping – 숫자 그룹화 규칙
- [grouping] – 일반 숫자의 자릿수 그룹화 방식을 나타내는 배열 (예: 3이면 1 000 000처럼 세 자리씩 묶음)
- [mon_grouping] – 통화 숫자의 자릿수 그룹화 방식을 나타내는 배열 (예: 2이면 인도식 1 00 00 00처럼 두 자리씩 묶음)
문법(Syntax)
localeconv()
매개변수(Parameters)
이 함수는 매개변수를 받지 않습니다.
반환값(Return)
setlocale()로 설정된 현재 로케일에 따라 숫자 및 통화 형식 정보를 담은 연관 배열을 반환합니다.
사용 예제(Example)
다음은 localeconv() 함수의 사용 예입니다.
<?php
setlocale(LC_ALL,"US");
$info = localeconv();
print_r($info);
?>
실행 결과(Output)
위 코드 실행 시 출력 결과는 다음과 같습니다.
Array
(
[decimal_point] => .
[thousands_sep] =>
[int_curr_symbol] =>
[currency_symbol] =>
[mon_decimal_point] =>
[mon_thousands_sep] =>
[positive_sign] =>
[negative_sign] =>
[int_frac_digits] => 127
[frac_digits] => 127
[p_cs_precedes] => 127
[p_sep_by_space] => 127
[n_cs_precedes] => 127
[n_sep_by_space] => 127
[p_sign_posn] => 127
[n_sign_posn] => 127
[grouping] => Array
(
)
[mon_grouping] => Array
(
)
)
출력 결과에서 값이 127로 표시되는 항목은 해당 로케일 환경에서 정의되지 않았음을 의미합니다. 실제 프로젝트에서는 서버의 로케일 설정 상태에 따라 반환값이 달라질 수 있으므로, 사용 전에 setlocale()로 원하는 로케일을 명확히 지정하는 것이 좋습니다.