HOWTO · PHP

PHP에서 문자열을 숫자로 변환하는 방법

이 문서에서는 PHP에서 숫자로 된 문자열을 숫자로 변환하는 방법을 설명합니다. `intval()`, `floatval()`, `settype()` 함수와 명시적 형 변환을 다룹니다.

이 페이지의 내용

PHP에서 숫자로 된 문자열을 정수로 변환하려면 (int)로 형 변환하거나 intval()을 호출합니다. 부동소수점 수로 변환하려면 (float) 또는 floatval()을 사용합니다. 형 변환과 함수 호출은 변환된 값을 만들면서 원본 문자열은 그대로 사용할 수 있게 둡니다. 기존 변수의 형 자체를 바꾸려면 settype()을 사용합니다. 간결한 식, 이름이 명확한 변환 함수, 변수 자체의 변경 중 무엇이 필요한지에 따라 적절한 방법을 선택하면 됩니다.

PHP에서 명시적 형 변환으로 문자열을 숫자로 변환하기

명시적 형 변환은 괄호 안에 지정한 형을 사용해 변환된 값을 만듭니다. 정수에는 (int)를, 부동소수점 수에는 (float)를 사용합니다. 값을 사용하는 위치에서 원하는 형이 분명할 때 바로 적용하기 좋은 방법입니다. 다음 독립 실행 예제는 각 유형의 숫자 문자열을 하나씩 변환합니다:

<?php
$integer = (int) "10";
$decimal = (float) "8.1";

echo $integer, "\n", $decimal, "\n";
10
8.1

형 변환 식은 예제처럼 새 변수에 할당하거나 식을 사용할 수 있는 곳에 바로 넣을 수 있습니다. 결과를 $integer 또는 $decimal에 할당하면 원래 문자열 리터럴이나 원본 변수는 바뀌지 않습니다. 값을 바꾸려는 의도가 있다면 같은 변수 이름을 다시 사용할 수도 있습니다. 결과가 정수여야 하면 (int)를, 소수 부분이 필요하면 (float)를 선택하세요. 이 예제는 숫자로 된 문자열을 사용하며 다른 형식의 입력을 형 변환할 때의 동작까지 설명하지는 않습니다.

PHP에서 intval() 함수로 문자열을 숫자로 변환하기

intval()은 정수 값을 반환합니다. 부동소수점 값이 필요하면 floatval()을 사용하세요. 이처럼 이름이 있는 함수는 식에서 변환 의도를 명확하게 드러내며, 코드에서 형 변환보다 읽기 쉬울 때 유용합니다. 두 함수 모두 변환된 값을 반환하므로 결과를 다른 변수에 저장하면 원본 문자열을 계속 사용할 수 있습니다:

<?php
$integer = intval("53");
$decimal = floatval("25.3");

echo $integer, "\n", $decimal, "\n";
53
25.3

정수로 변환하려면 intval()을, 부동소수점 수로 변환하려면 floatval()을 선택하세요. 형 변환과 해당 함수 중 무엇을 쓸지는 주로 어느 쪽이 의도를 더 잘 전달하는지에 따라 결정하면 됩니다. 두 예제 모두 숫자 문자열을 지정한 형으로 변환합니다. 반환값을 의도적으로 같은 변수에 다시 할당하지 않는 한 원본 문자열은 바뀌지 않습니다. 이 예제는 다른 문자가 포함된 문자열을 어떻게 파싱하는지에 관해서는 설명하지 않습니다.

PHP에서 settype() 함수로 문자열을 숫자로 변환하기

settype()은 변수와 목표 형 이름을 인수로 받습니다. 별도의 변환 값을 반환하는 대신 해당 변수 자체를 변경합니다. 숫자로 된 문자열을 정수로 변환하려면 목표 형으로 integer를 사용하세요:

<?php
$value = "45";
settype($value, "integer");

echo $value, "\n";
45

호출 후에는 $value에 변환된 값이 들어가며, 그 변수에 원래 할당했던 문자열은 더 이상 $value로 사용할 수 없습니다. 문자열과 변환된 값이 모두 필요하면 문자열은 한 변수에 보관하고 다른 변수를 settype()에 전달하세요. 또는 형 변환이나 변환 함수를 사용해 결과를 별도 변수에 할당할 수 있습니다. 기존 변수 자체를 바꾸는 것이 유용하면 settype()을 사용하고, 원본 변수는 바꾸지 않은 채 변환된 값을 할당하거나 사용하려면 (int), (float), intval(), floatval()을 사용하세요. 이 예제는 표시된 숫자 문자열을 정수로 변환하는 경우에 한정됩니다.