현재 위치: > 최신 기사 목록> IS_NAN 및 IS_INFINITE로 PHP의 반복 판단을 피하기위한 팁

IS_NAN 및 IS_INFINITE로 PHP의 반복 판단을 피하기위한 팁

gitbox 2025-05-27

PHP에서 IS_NAN 함수 및 IS_INFINITE 함수는 숫자의 특정 상태를 확인하는 데 사용되는 두 가지 일반적으로 사용되는 기능입니다. IS_NAN은 "NOT-NUMBER"(NAN)인지 확인하고 IS_Infinite 는 무한히 큰지 확인합니다. 종종 함께 사용되지만 경우에 따라 중복 판단을 피하기 위해 코드를 최적화하여 성능을 향상시킬 수 있습니다.

1. IS_NANIS_INFINITE 의 기본 사항

  • IS_NAN : 값이 NAN인지 확인하는 데 사용됩니다.

    • 반환 값 : 값이 NAN 인 경우 true를 반환하십시오. 그렇지 않으면 False를 반환하십시오.

  • IS_INFINITE : 값이 양수인지 음수인지 확인하는 데 사용됩니다.

    • 반환 값 : 값이 긍정적이거나 부정적인 무한대 인 경우 true를 반환하십시오. 그렇지 않으면 False를 반환하십시오.

이 두 기능은 일반적으로 부동 소수점 수의 계산에 사용됩니다. 예를 들어, 수학 연산을 수행 할 때 무한 또는 비 언어 결과가 발생할 수 있습니다. 이 두 기능을 사용하면 계산 결과를 효과적으로 확인하고 보호하는 데 도움이됩니다.

2. 문제의 근본

경우에 따라 코드는 IS_NANIS_INFINITE를 사용하여 판단을합니다. 이 접근법의 문제점은 NAN과 Infinity가 상호 배타적이지 않으며 일부 입력은 동시에 두 조건을 모두 충족시킬 수 있다는 것입니다. 이 경우 코드에서 두 번의 확인을 수행하며 실제로이 두 개의 검사를 병합 할 수 있습니다.

예를 들어:

 if (is_nan($value) || is_infinite($value)) {
    // 처리 오류
}

위의 코드에서 $ 값 이 NAN과 Infinite라면 (이론적으로 불가능하지만 일부 에지 케이스를 고려할 때이 방법을 쓸 수 있음) PHP는이를 두 번 판단하여 코드 성능을 낭비하게됩니다.

3. 판단을 최적화하는 방법?

반복적 인 판단을 피하기 위해 먼저 하나의 조건을 확인한 다음 결과에 따라 다른 조건을 계속 판단 해야하는지 판단 할 수 있습니다. 다음과 같은 방법으로 코드를 최적화 할 수 있습니다.

최적화 방법 1 : 먼저 IS_NAN을 결정합니다

 if (is_nan($value)) {
    // 거래하십시오 NaN
} elseif (is_infinite($value)) {
    // 거래하십시오无穷大
} else {
    // 거래하십시오其他情况
}

이 접근법의 장점은 NAN이 특별한 상태이며 일반적으로 무한대보다 일반적이기 때문에 먼저 NAN인지 확인한다는 것입니다. 이런 식으로 NAN 인 경우 코드는 판단에서 직접 뛰어 내려 IS_INFINITE를 실행하지 않습니다.

최적화 방법 2 : 반복적 인 판단을 피하십시오

NAN과 Infinity가 동시에 발생하지 않을지 (이론적으로는 일어나지 않을 것인지) 신속하게 확인하고 싶다면 직접 빠른 점검을 원한다면 판단을 함께 병합 할 수 있습니다.

 if (is_nan($value) || is_infinite($value)) {
    // 거래하십시오 NaN 또는 무한대
}

이 경우 실제로 두 상태 중 하나에 대해서만 돌봐야하며, 이는 두 개의 반복 판단을 피합니다.

4. 고급 최적화 : 사용자 정의 점검 기능

값이 프로젝트에서 잘못된 값인지 여부를 자주 결정 해야하는 경우 사용자 정의 기능을 캡슐화하여 코드를 더욱 단순화하고 가독성을 향상시킬 수 있습니다.

 function is_invalid_value($value) {
    return is_nan($value) || is_infinite($value);
}

$value = 1.0 / 0;  // Infinity
if (is_invalid_value($value)) {
    // 거래하십시오无效值
}

이 사용자 지정 기능에서는 IS_NANIS_INFINITE 의 확인 논리를 캡슐화하여 기본 코드를보다 간결하고 명확하게 만듭니다.

5. 성능 고려 사항

PHP에서 IS_NANIS_INFINITE 의 성능 오버 헤드는 매우 작으므로 대부분의 경우 이러한 두 기능을 최적화하기위한 호출의 성능 향상은 거의 최소화됩니다. 더 중요한 것은, 심판의 불필요한 복제를 줄임으로써, 코드의 유지 보수 및 명확성이 향상되는 것입니다.

그러나 코드에 많은 수의 수치 계산이 포함되고 이러한 계산 결과의 효과가 자주 확인 해야하는 경우 위의 최적화 방법을 채택하면 불필요한 점검을 줄이고 성능을 간접적으로 개선하는 데 도움이 될 수 있습니다.

6. 요약

반복 판단을 피하기 위해 IS_NANIS_INFINITE 의 판단 논리를 최적화하여 코드 성능을 향상시킬뿐만 아니라 코드의 선명도와 유지 가능성을 향상시킵니다. 가장 좋은 방법은 Nan을 먼저 판단한 다음 필요할 때만 인피니티를 판단하는 것입니다. 고성능 수요 시나리오에서는 사용자 정의 검사 기능을 캡슐화하는 것도 좋은 선택입니다.

이 최적화를 통해 PHP에서 더 효율적으로 수치 계산의 특수 사례를 처리 할 수 ​​있습니다.

관련 리소스

이러한 기능에 대한 추가 이해와 PHP의 특수 값을 처리하는 방법을 보려면 다음 URL을 방문 할 수 있습니다.

https://gitbox.net/php-manual/is_nan

https://gitbox.net/php-manual/is_infinite