In PHP, the zero division error is a common runtime error, especially when performing mathematical operations, if the denominator is zero, it will cause the program to throw a warning or an exception. To avoid this, we usually need to check the value of the divisor in advance to make sure it is a valid number and is not zero. PHP provides the is_finite() function to determine whether a value is a finite value, which is very helpful for catching the zero division error.
is_finite() is a function in PHP to detect whether a numeric value is a finite value. Return true if the argument is a finite number (neither infinity nor non-number NaN), otherwise return false .
<?php
var_dump(is_finite(10)); // bool(true)
var_dump(is_finite(INF)); // bool(false)
var_dump(is_finite(NAN)); // bool(false)
?>
When performing division operations, we can first determine whether the denominator is zero or non-finite number. If it is not a finite number, avoid division, or give default values or error prompts.
<?php
function safe_divide($numerator, $denominator) {
// Determine whether the denominator is finite and not zero
if (is_finite($denominator) && $denominator != 0) {
return $numerator / $denominator;
} else {
return "mistake:The denominator cannot be zero or invalid";
}
}
// test
echo safe_divide(10, 2); // Output 5
echo safe_divide(10, 0); // Output mistake:The denominator cannot be zero or invalid
echo safe_divide(10, INF); // Output mistake:The denominator cannot be zero or invalid
?>
In this example, is_finite() determines whether the denominator is a finite number, and can effectively avoid the zero-dividing error with the $denominator != 0 condition.
Directly determine whether it is zero
if ($denominator == 0) {
// 处理mistake
} else {
$result = $numerator / $denominator;
}
Use ternary operator to assign default values
$result = ($denominator == 0) ? 0 : $numerator / $denominator;
Utilize exception handling
For PHP 7 and above, you can handle DivisionByZeroError exception thrown by catching the zero-dividing:
try {
$result = $numerator / $denominator;
} catch (DivisionByZeroError $e) {
echo "除零mistake:" . $e->getMessage();
}
Combined with is_finite function
As shown above, combined with is_finite(), it can detect the validity of the divisor, avoiding the case where the denominator is infinity or NaN.
The is_finite() function is a good tool in PHP to judge the validity of numeric values. Combined with zero-dividing judgment, it can help developers write more robust code to avoid zero-dividing errors causing program crashes. In addition, rational use of conditional judgment and exception handling is also a common and effective way. According to actual needs, choosing the right error protection method can improve the security and stability of the code.