정의 및 사용 방법
- PHP 버전
- 4+
is_numeric() 함수는
주어진 값이 숫자 또는 숫자 문자열인지 확인합니다.
매개변수로 전달된 값이 숫자이거나 숫자 문자열이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
숫자란
소수점이 없는 정수 타입뿐만 아니라 소수점이 있는 부동소수점 숫자 타입도 모두 '숫자'입니다.
숫자 문자열이란
PHP에서 숫자처럼 해석될 수 있는 정수 타입의 문자열과 부동소수점 숫자 타입의 문자열도 모두 '숫자 문자열'입니다.
기본 예제
/* 정수(integer) 타입 */
var_dump(is_numeric(1)); // bool(true)
var_dump(is_numeric(0)); // bool(true)
var_dump(is_numeric(-10)); // bool(true)
/* 부동 소수점 숫자(float) */
var_dump(is_numeric(1.0)); // bool(true)
var_dump(is_numeric(0.0)); // bool(true)
var_dump(is_numeric(3.14)); // bool(true)
/* 숫자 문자열 */
var_dump(is_numeric('1')); // bool(true)
var_dump(is_numeric('0')); // bool(true)
var_dump(is_numeric('10.5')); // bool(true)
var_dump(is_numeric('123e2')); // bool(true)
/* 문자열 */
var_dump(is_numeric('hello')); // bool(false)
var_dump(is_numeric('abc123')); // bool(false)
/* 숫자 연산 결과 */
var_dump(is_numeric(1 + 1)); // bool(true)
var_dump(is_numeric(10 / 2)); // bool(true)
var_dump(is_numeric(9 / 2)); // bool(true)
/* 타입 캐스팅(Type Casting, 형 변환) */
var_dump(is_numeric((float) '1')); // bool(true)
var_dump(is_numeric((int) '10.5')); // bool(true)
var_dump(is_numeric((string) 123)); // bool(true)
참고하세요!
gettype() 함수는 주어진 값의 데이터 타입을 문자열로 반환합니다.
구문
is_numeric(mixed $value): bool
매개변수
$value |
필수. 숫자 또는 숫자 문자열인지 확인할 값입니다. |
|---|
반환 값
매개변수로 전달된 값이 숫자이거나 숫자 문자열이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
PHP 8.0.0 버전부터의 변경 사항
- PHP 8.0.0 버전 이전에는 숫자 뒤에 공백이 있는 숫자 형식의 문자열은
is_numeric()함수에 의해 숫자로 인식되지 않았습니다. 예를 들어'35 '는 공백 문자가 포함되어 있어false를 반환했습니다. - PHP 8.0.0 버전부터는
true를 반환하도록 변경되었습니다.
var_dump(is_numeric('35 ')); // bool(false) => 숫자 뒤에 공백이 있는 숫자 형식의 문자열이 있을 경우
var_dump(is_numeric(' 35')); // bool(true) => 숫자 앞에 공백이 있는 숫자 형식의 문자열이 있을 경우
var_dump(is_numeric('35 ')); // bool(true) => PHP 8.0.0 버전부터 true를 반환
var_dump(is_numeric(' 35')); // bool(true) => PHP 8.0.0 버전 이전에도 역시 true를 반환
즉, 이 변경 사항은 숫자 뒤에 공백이 있는 문자열이 is_numeric() 함수에 전달될 때 이를 숫자로 간주하여 true를 반환하도록 허용하는 것입니다.
주의할 점
+ 또는 -부호가 포함된 문자열은 is_numeric() 함수에 의해 숫자로 인식됩니다. 예를 들어, '+123' 또는 '-456'은 숫자로 인식됩니다.
var_dump(is_numeric('+123')); // bool(true)
var_dump(is_numeric('-456')); // bool(true)
문자열이 모두 숫자인지 확인하려면 ctype_digit() 함수를 사용하세요.
ctype_digit() 함수를 사용
var_dump(ctype_digit('+123')); // bool(false)
var_dump(ctype_digit('-456')); // bool(false)
var_dump(ctype_digit('456')); // bool(true)
코드 부연설명
ctype_digit() 함수는
주어진 문자열이 0부터 9까지의 숫자로만 구성되어 있는지 확인합니다.
문자열이 모두 숫자로 이루어져 있다면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
같이 보기
- PHP var_dump() 함수 – 변수의 타입·길이·값까지 출력
- PHP print_r() 함수 – 변수의 정보을 사람이 읽기 쉽게 출력
- PHP gettype() 함수 - 변수의 데이터 타입 확인
- PHP is_int() 함수 - 변수의 정수(integer) 타입 확인
- PHP is_float() 함수 - 변수의 부동소수점 숫자(float) 타입 확인
- PHP is_bool() 함수 - 변수의 부울(boolean) 타입 확인
- PHP is_string() 함수 - 변수의 문자열(string) 타입 확인
- PHP is_array() 함수 - 변수의 배열(array) 타입 확인
- PHP is_object() 함수 - 변수의 객체(object) 타입 확인
- PHP is_resource() 함수 - 변수의 리소스(resource) 타입 확인
- PHP is_null() 함수 - 변수의 NULL 타입 확인
- PHP ctype_digit() 함수 - 문자열이 모두 숫자인지 확인