숫자 계산 및 데이터 검증을 수행 할 때 PHP는 IS_FINITE () 및 IS_NAN () 과 같은 부동 소수점 숫자를 감지하기위한 일부 기능을 제공합니다. 이 두 함수는 값이 유한 값인지 (즉, 무한대 또는 무한하지 않음)를 결정하는 데 사용됩니다. 실제 발전에서 우리는 종종 논리적 오류 나 작동 예외를 피하기 위해 값의 유효성을 보장하기 위해 동시에 그것들을 사용해야합니다.
is_finite (float $ num) : bool
$ $ num이 유한 값이면 true를 반환합니다. 그렇지 않으면 False를 반환합니다. 이것은 양성 및 부정적인 무한대 (INF 및 -inf)를 배제하는 데 사용될 수 있습니다.
is_nan (float $ num) : bool
$ num이 NAN이면 (숫자가 아님), 일반적으로 불법 수학 연산의 결과 입니다.
외부 데이터 (예 : 사용자 입력, 파일 읽기 또는 API 반환)를 처리 할 때 데이터가 합법적 인 부동산 지점 번호 여야한다고 사전 설정할 수 없습니다. 일반적인 시나리오는 부서, 제곱근, 로그 등과 같은 수학 연산을 수행하는 것입니다. 결과는 NAN 또는 무한대 일 수 있습니다. 예를 들어:
$result = log(0); // 반품 -INF
또는:
$result = acos(2); // 도메인 밖,반품 NAN
IS_FINITE () 만 사용한다고해서 NAN 값은 제외되지 않으며 그 반대도 마찬가지입니다. 따라서 값이 "정상적인"값인지 여부를보다 포괄적으로 결정하려면 두 기능을 결합해야합니다.
값이 "정상"인지 더 효율적으로 결정하려면 다음과 같이 일반적인 기능을 작성할 수 있습니다.
function is_valid_number($value) {
return is_finite($value) && !is_nan($value);
}
이 기능을 사용하면 다양한 데이터 처리에서 쉽게 호출 할 수 있습니다.
$data = [
log(0),
3.1415,
acos(2),
1.0e309
];
foreach ($data as $value) {
if (is_valid_number($value)) {
echo "유효한 가치: $value\n";
} else {
echo "잘못된 가치: $value\n";
}
}
출력은 다음과 같습니다.
잘못된 가치: -INF
유효한 가치: 3.1415
잘못된 가치: NAN
잘못된 가치: INF
예를 들어, 데이터 처리 파이프 라인에서는 통계 분석을 위해 <code> https://gitbox.net/api/data </code>에서 숫자 배열을 얻을 수 있습니다. 수학 작업을 수행하기 전에 IS_VALID_NUMBER ()를 사용하여 예상치 못한 NAN 또는 무한한 오염 후 결과를 피하기 위해 데이터를 정리하십시오.
$json = file_get_contents('https://gitbox.net/api/data');
$data = json_decode($json, true);
$cleanData = array_filter($data, 'is_valid_number');
$average = array_sum($cleanData) / count($cleanData);
echo "평균 가치: $average";
이것은 코드를 깨끗하게 만들뿐만 아니라 논리적 취약점을 최소화합니다.
IS_FINITE () 및 IS_NAN ()을 조합하여 사용하는 것은 숫자 값의 유효성을 확인하는 중요한 수단입니다. 입력 검증, 데이터 전처리, API 수신 및 기타 링크에서 균일하게 사용하여 PHP 응용 프로그램의 견고성 및 유지 관리 가능성을 크게 향상시킬 수 있습니다. 실제 개발에서,이 방어 프로그래밍 기술은 종종 발견하기 어려운 경계 오류를 피합니다.