정의 및 사용법
NAN은 "Not A Number"(숫자가 아님)의 약자로, 수학적으로 정의되지 않거나 표현할 수 없는 부동소수점 값을 의미합니다. is_nan() 함수는 인자로 전달된 값이 NAN인지 아닌지를 검사하는 데 사용됩니다.
구문
is_nan ( float $val ) : bool
매개변수
| 번호 | 매개변수 및 설명 |
|---|---|
| 1 | val NAN인지 여부를 검사할 부동소수점(float) 값입니다. |
반환 값
PHP is_nan() 함수는 전달된 값(val)이 "숫자가 아닌 값(NAN)"이면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
PHP 버전
이 함수는 PHP 4.x, PHP 5.x, PHP 7.x 모든 버전에서 사용할 수 있습니다.
예제 1: 일반 숫자 값 검사
다음 예제에서 100은 정상적인 숫자이므로 NAN에 해당하지 않습니다.
<?php
$val = 100;
$ret = is_nan($val);
var_dump($val, $ret);
?>
출력 결과
int(100)
bool(false)
예제 2: log(0) 값 검사
log(0)의 값은 음의 무한대(-INF)입니다. 무한대는 NAN이 아니므로 FALSE가 반환됩니다.
<?php
$val = log(0);
$ret = is_nan($val);
var_dump($val, $ret);
?>
출력 결과
float(-INF)
bool(false)
예제 3: acos() 범위 초과 값 검사
cos(x)의 값은 항상 -1과 1 사이에 있으므로, 이 범위를 벗어난 값을 acos()에 전달하면 NAN이 반환됩니다.
<?php
$val = acos(5);
$ret = is_nan($val);
var_dump($val, $ret);
?>
출력 결과
float(NAN)
bool(true)
예제 4: 음수의 제곱근 검사
마찬가지로 sqrt(-1)처럼 음수의 제곱근은 실수 범위에서 정의되지 않으므로 NAN이 되어, is_nan() 함수는 TRUE를 반환합니다.
<?php
$val = sqrt(-1);
$ret = is_nan($val);
var_dump($val, $ret);
?>
출력 결과
float(NAN)
bool(true)
정리
is_nan() 함수는 수학적으로 유효하지 않은 연산 결과(예: 음수의 제곱근, 범위를 벗어난 역삼각함수 값 등)를 안전하게 감지할 때 유용합니다. 단, 무한대(INF)는 NAN이 아니라는 점에 유의해야 하며, 무한대 여부는 is_infinite() 함수로 별도로 확인해야 합니다.