PHP에서 IS_INT 및 IS_DOUBLE 은 일반적으로 사용되는 두 가지 유형 확인 기능입니다. IS_INT는 값이 정수인지 여부를 결정하는 데 사용되며 IS_Double은 값이 부동 소수점 번호인지 결정하는 데 사용됩니다. 이 두 기능의 기능은 매우 직관적이지만 변수가 부동 소수점 번호인지 정수인지 더 효율적으로 결정하려면 간단히 IS_INT 및 IS_DOUBLE을 별도로 호출하면 특히 고성능 요구 사항이있는 응용 프로그램에서 효율성 문제가 발생할 수 있습니다.
php에서 is_int () 및 is_double ()은 변수 유형을 확인하는 데 사용되는 내장 함수입니다. IS_INT () 함수는 변수가 정수인지 여부를 감지하고, 변수가 정수임을 나타내려면 true를 반환하고, 정수가 아님을 표시하기 위해 False를 반환합니다. IS_DOUBLE () (변수가 부동 소수점 번호인지 확인하는 데 사용될 수도 있고, 부동 소수점 번호를 나타내려면 true를 반환하고, 비 플로트 번호를 나타 내려면 False .
이 두 기능은 일반적으로 단일 유형을 판단하는 데 사용되지만 변수가 부동 소수점 번호인지 정수인지를 구별하기 위해 함께 사용 할 수도 있습니다. 문제는 PHP가 다른 상황, 특히 숫자 문자열 및 기타 유형의 값에 따라 숫자 유형을 해당 유형으로 자동 변환한다는 것입니다. 이는보다 자세한 구별이 필요할 수 있습니다.
변수 유형을 개별적으로 확인하기 위해 is_int () 또는 is_double () 만 사용하는 경우 다음과 같은 문제가 발생할 수 있습니다.
유형 변환 : PHP에는 자동 유형 변환이있어 정수처럼 보이는 일부 부동 소수점 번호 (예 : 1.0)가 정수로 판단됩니다.
성능 오버 헤드 : is_int () 및 is_double () 함수가 호출 될 때마다 PHP는 변수의 유형을 확인합니다. 복잡한 코드 로직 인 경우 성능 오버 헤드를 가져올 수 있습니다.
정확하게 구별 할 수 없음 : php의 is_int () 및 is_double ()은 문자열 번호, 부울 및 기타 유형을 정확하게 구별하지 못할 수 있습니다.
부동 소수점 숫자를 정수와보다 효율적으로 구별하기 위해 PHP의 유형 확인 기능과 다른 방법을 결합하여보다 정확한 판단을 달성 할 수 있습니다.
먼저 IS_INT ()를 사용하여 변수가 정수인지 확인하십시오. 정수라면 계속 확인할 필요가 없습니다.
<span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-number">5</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is an integer."</span></span><span>;
}
</span></span>
부동 소수점 번호의 판단을 위해서는 IS_INT ( )가 정수로 1.0을 잘못 판단하는 것을 피하기 위해 추가 점검 조건과 함께 IS_DOUBLE ()를 사용해야합니다. IS_INT ()를 제외 하여 부동 소수점 번호를 정확하게 식별 할 수 있습니다.
<span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-number">5.5</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>) && !</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a float."</span></span><span>;
}
</span></span>
숫자 변수가 아닌지 확인하려면 is_numeric ()을 사용하여 문자열을 숫자로 변환 할 수 있는지 확인할 수도 있습니다. 그런 다음 최종 판단은 is_int () 및 is_double ()을 통해 이루어집니다.
<span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-string">"10.5"</span></span><span>; </span><span><span class="hljs-comment">// 문자열 번호</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_numeric</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-string">'.'</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a float."</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is an integer."</span></span><span>;
}
}
</span></span>
is_int () , is_double () 및 is_numeric () 과 같은 함수를 결합하여 변수 유형을 효율적이고 정확하게 판단하여 단순히이 두 함수를 사용하여 발생할 수있는 잘못 판단 및 성능 문제를 피할 수 있습니다. 보다 복잡한 시나리오의 경우 먼저 예비 선별 검사에 IS_NUMERIC ()를 사용한 다음 실제 요구에 따라 판단 논리를 더 세분화하는 것이 가장 좋습니다.
이 최적화 방법을 통해 부동 소수점 번호와 정수를보다 정확하게 구별하면서 코드의 가독성 및 실행 효율을 향상시킬 수 있습니다.