Dans PHP, l'erreur de division zéro est une erreur d'exécution courante, en particulier lors de l'exécution d'opérations mathématiques, si le dénominateur est nul, il provoquera un avertissement ou une exception du programme. Pour éviter cela, nous devons généralement vérifier la valeur du diviseur à l'avance pour nous assurer qu'il s'agit d'un nombre valide et n'est pas nul. PHP fournit la fonction is_finite () pour déterminer si une valeur est une valeur finie, ce qui est très utile pour attraper l'erreur de division zéro.
is_finite () est une fonction de PHP pour détecter si une valeur numérique est une valeur finie. Renvoie vrai si l'argument est un nombre fini (ni infinité ni nan non-nombre), sinon renvoyez false .
<?php
var_dump(is_finite(10)); // bool(true)
var_dump(is_finite(INF)); // bool(false)
var_dump(is_finite(NAN)); // bool(false)
?>
Lorsque vous effectuez des opérations de division, nous pouvons d'abord déterminer si le dénominateur est nul ou non fini. S'il ne s'agit pas d'un nombre fini, évitez la division ou donnez des valeurs par défaut ou des invites d'erreur.
<?php
function safe_divide($numerator, $denominator) {
// Déterminez si le dénominateur est fini et non zéro
if (is_finite($denominator) && $denominator != 0) {
return $numerator / $denominator;
} else {
return "erreur:Le dénominateur ne peut pas être nul ou invalide";
}
}
// test
echo safe_divide(10, 2); // Sortir 5
echo safe_divide(10, 0); // Sortir erreur:Le dénominateur ne peut pas être nul ou invalide
echo safe_divide(10, INF); // Sortir erreur:Le dénominateur ne peut pas être nul ou invalide
?>
Dans cet exemple, is_finite () détermine si le dénominateur est un nombre fini et peut effectivement éviter l'erreur de division zéro avec le $ dénominateur! = 0 Condition.
Déterminez directement s'il est nul
if ($denominator == 0) {
// 处理erreur
} else {
$result = $numerator / $denominator;
}
Utilisez l'opérateur ternaire pour attribuer des valeurs par défaut
$result = ($denominator == 0) ? 0 : $numerator / $denominator;
Utiliser la gestion des exceptions
Pour PHP 7 et plus, vous pouvez gérer une exception DivisionByzeroError lancée en attrapant la division zéro:
try {
$result = $numerator / $denominator;
} catch (DivisionByZeroError $e) {
echo "除零erreur:" . $e->getMessage();
}
Combiné avec la fonction is_finite
Comme indiqué ci-dessus, combiné avec IS_FINITE (), il peut détecter la validité du diviseur, en évitant le cas où le dénominateur est Infinity ou NAN.
La fonction is_finite () est un bon outil en PHP pour juger la validité des valeurs numériques. Combiné avec un jugement à division zéro, il peut aider les développeurs à écrire un code plus robuste pour éviter les erreurs de division zéro provoquant des accidents de programme. De plus, l'utilisation rationnelle du jugement conditionnel et de la gestion des exceptions est également un moyen commun et efficace. Selon les besoins réels, le choix de la bonne méthode de protection des erreurs peut améliorer la sécurité et la stabilité du code.