intval()
함수의 사용법
intval()
함수는
인수로 전달된 값을 정수로 변환하여 반환합니다.
특히, 숫자와 단위가 함께 포함된 문자열이나 부동소수점 숫자를 정수로 변환하여 수치 계산에 활용할 때 매우 유용합니다.
/* 문자열을 정수로 변환 */
echo intval('123'); // 출력: 123
echo intval('100px'); // 출력: 100 (문자 이후의 부분은 무시됨)
echo intval('50%'); // 출력: 50 (문자 이후의 부분은 무시됨)
/* 부동소수점 숫자를 정수로 변환 */
echo intval(42.89); // 출력: 42 (소수 부분이 버려짐)
intval()
함수는 변환된 값을 반환하며, 인수로 전달된 원본 변수나 값은 변경되지 않습니다.
$var = '3.14';
var_dump(intval($var)); // int(3)
/* 원본 변수나 값은 변경되지 않습니다. */
var_dump($var); // string(4) "3.14"
intval()
함수의 형식은 다음과 같습니다.
구문
intval(mixed $value, int $base = 10): int
매개변수
$value |
정수로 변환할 값입니다.
어떤 자료형이든 가능하지만, 객체는 사용할 수 없습니다. 객체를 사용하면 E_WARNING 레벨의 에러가 발생하고 1 이 반환됩니다. |
---|---|
$base |
옵션.
숫자의 진법을 나타냅니다. 생략하면 기본값은 10 으로 10진수를 의미합니다. 흔히 사용되는 진법은 다음과 같습니다.
16 을 지정하면 intval() 함수는 해당 문자열을 16진수로 해석합니다. |
반환 값
지정된 변환 기준에 따라 값을 정수로 변환하여 반환합니다.
지정된 변환 기준
지정된 변환 기준은 intval()
함수의 작동 원리를 이해하는데 매우 중요한 개념입니다.
문자열을 변환할 경우
숫자로 시작하는 문자열의 경우 숫자 부분만 추출하여 정수로 변환합니다. 숫자가 아닌 문자가 나오면 그 이후의 문자는 무시됩니다.
/* 숫자 문자열 */
echo intval('123'); // 출력: 123
/* 숫자로 시작하는 문자열 */
echo intval('100px'); // 출력: 100 (문자 이후의 부분은 무시됨)
echo intval('50%'); // 출력: 50 (문자 이후의 부분은 무시됨)
숫자가 아닌 문자로 시작하는 문자열은 0
을 반환합니다.
/* 숫자가 아닌 문자로 시작하는 문자열 */
echo intval('abc'); // 출력: 0 (0을 반환합니다.)
echo intval('abc123'); // 출력: 0 (0을 반환합니다.)
하지만, 문자열에서 숫자 앞에 있는 부호(+
또는 -
)를 인식하고 해당 부호를 유지한 채로 숫자를 정수로 변환합니다.
/* 숫자가 아닌 문자로 시작하는 문자열: 양수와 음수 부호 */
echo intval('+42'); // 출력: 42
echo intval('-42'); // 출력: -42
빈 문자열(''
)은 0
을 반환합니다.
/* 빈 문자열 */
echo intval(''); // 출력: 0 (0을 반환합니다.)
부동소수점 숫자
소수점 이하 부분은 버리고 정수 부분만 반환합니다.
/* 부동소수점 숫자 */
echo intval(42.89); // 출력: 42 (소수 부분이 버려짐)
배열
빈 배열은 0
을 반환하고, 비어 있지 않은 배열은 1
을 반환합니다.
/* 배열 */
echo intval([]); // 출력: 0 (빈 배열)
echo intval([1, 2, 3]); // 출력: 1 (비어있지 않은 배열)
객체
객체를 사용하면 E_WARNING 레벨의 에러가 발생하고 1
을 반환합니다.
/* 객체 */
class MyClass {}
$obj = new MyClass();
echo intval($obj); // 출력: 1
// Warning: Object of class MyClass could not be converted to int in...
부울(boolean)
true
는 1
, false
는 0
을 반환합니다.
/* 부울(boolean) */
echo intval(true); // 출력: 1 (true는 1로 변환)
echo intval(false); // 출력: 0 (false는 0으로 변환)
NULL
NULL
은 0
을 반환합니다.
/* NULL */
echo intval(NULL); // 출력: 0