PHP에서 제로 디비전 오류는 일반적인 런타임 오류입니다. 특히 수학 작업을 수행 할 때 분모가 0 인 경우 프로그램이 경고 나 예외를 던지게됩니다. 이를 피하려면 일반적으로 유효한 숫자이며 0이 아닌지 확인하기 위해 Divisor의 값을 미리 확인해야합니다. PHP는 IS_FINITE () 함수를 제공하여 값이 유한 값인지 여부를 결정하며, 이는 제로 디비전 오류를 잡는 데 매우 도움이됩니다.
is_finite ()는 숫자 값이 유한 값인지 여부를 감지하는 PHP의 함수입니다. 인수가 유한 번호 (무한대 나 수상자가 아님) 인 경우 true를 반환하십시오. 그렇지 않으면 False를 반환하십시오.
<?php
var_dump(is_finite(10)); // bool(true)
var_dump(is_finite(INF)); // bool(false)
var_dump(is_finite(NAN)); // bool(false)
?>
분할 작업을 수행 할 때는 먼저 분모가 0인지 아닌지 여부를 결정할 수 있습니다. 유한 번호가 아닌 경우 분할을 피하거나 기본값 또는 오류 프롬프트를 제공하십시오.
<?php
function safe_divide($numerator, $denominator) {
// 분모가 제로가 아닌 유한한지 여부를 결정하십시오
if (is_finite($denominator) && $denominator != 0) {
return $numerator / $denominator;
} else {
return "실수:분모는 0 또는 유효하지 않을 수 없습니다";
}
}
// 시험
echo safe_divide(10, 2); // 산출 5
echo safe_divide(10, 0); // 산출 실수:분모는 0 또는 유효하지 않을 수 없습니다
echo safe_divide(10, INF); // 산출 실수:분모는 0 또는 유효하지 않을 수 없습니다
?>
이 예에서 IS_FINITE ()는 분모가 유한 번호인지 여부를 결정하고 $ denominator! = 0 조건으로 제로 디징 오류를 효과적으로 피할 수 있습니다.
0인지 직접 결정하십시오
if ($denominator == 0) {
// 处理실수
} else {
$result = $numerator / $denominator;
}
Ternary Operator를 사용하여 기본값을 할당하십시오
$result = ($denominator == 0) ? 0 : $numerator / $denominator;
예외 처리를 활용합니다
PHP 7 이상의 경우 Zero Dividing을 잡음으로써 DivisionByzeroRror 예외를 처리 할 수 있습니다.
try {
$result = $numerator / $denominator;
} catch (DivisionByZeroError $e) {
echo "除零실수:" . $e->getMessage();
}
IS_FINITE 기능과 결합합니다
위에서 볼 수 있듯이 IS_FINITE () 와 결합하면 분모가 무한대 또는 NAN 인 경우를 피하기 위해 제수의 유효성을 감지 할 수 있습니다.
IS_FINITE () 함수는 PHP에서 숫자 값의 유효성을 판단하는 좋은 도구입니다. 생생한 판단과 결합하여 개발자는 프로그램 충돌을 일으키는 제로 디코딩 오류를 피하기 위해보다 강력한 코드를 작성하는 데 도움이 될 수 있습니다. 또한 조건부 판단 및 예외 처리의 합리적인 사용도 일반적이며 효과적인 방법입니다. 실제 요구에 따라 올바른 오류 보호 방법을 선택하면 코드의 보안 및 안정성이 향상 될 수 있습니다.