Dans PHP, la fonction ceil () est utilisée pour rassembler le numéro de point flottant et renvoyer l'entier suivant non plus petit que le paramètre. Cependant, de nombreux développeurs peuvent ignorer une prémisse lors de l'utilisation de ceil () : il ne peut être traité que. Si le passage est un type non numérique, tel qu'un réseau de chaînes, une chaîne booléenne ou non numérique, ceil () peut signaler une erreur ou renvoyer un résultat imprévisible.
Cet article explorera comment résoudre le problème gracieusement lors de la rencontre des types non nucères que ceil () ne peut pas gérer.
echo ceil(4.3); // Sortir 5
echo ceil(9.999); // Sortir 10
Oui, dans des circonstances normales, son comportement est très direct. Mais jetons un coup d'œil à l'exemple suivant:
echo ceil("abc"); // Warning: A non-numeric value encountered
À l'heure actuelle, PHP lancera un avertissement et ne retournera pas le résultat que nous attendons.
La clé pour résoudre ce problème réside dans la vérification et la conversion du type . Vous pouvez utiliser la fonction is_numeric () pour déterminer si la variable est un type numérique:
$value = "abc";
if (is_numeric($value)) {
echo ceil($value);
} else {
echo "La valeur d'entrée n'est pas une valeur numérique valide。";
}
Cette méthode est la plus sûre et peut effectivement empêcher une entrée non valide.
Dans certains cas, vous pouvez taper la valeur avant d'essayer ceil () , par exemple, vous recevez un nombre sous la forme d'une chaîne:
$value = "15.7";
if (is_numeric($value)) {
$value = (float) $value;
echo ceil($value); // Sortir 16
} else {
echo "Veuillez saisir un numéro juridique";
}
Cette méthode convient aux sources de données incertaines telles que l'entrée des utilisateurs et le retour API.
Pour éviter la logique de jugement répétée à plusieurs endroits, nous pouvons le résumer dans une fonction d'outil:
function safe_ceil($input) {
if (is_numeric($input)) {
return ceil((float) $input);
} else {
// Vous pouvez choisir de vous connecter、Lancer une exception ou renvoyer la valeur par défaut
return null;
}
}
// Exemple:
echo safe_ceil("9.3"); // Sortir 10
echo safe_ceil("invalid"); // Sortir null
De cette façon, vous pouvez utiliser en toute sécurité safe_ceil () pour remplacer la fonction Native CeIl () tout au long de votre projet.
Supposons que vous développiez un système de commerce électronique et que vous deviez calculer dynamiquement le niveau de fret en fonction du prix du produit. Les données de prix peuvent provenir d'interfaces externes, et parfois le format n'est pas standardisé:
$price = get_product_price_from_api(); // Exemple返回:"29.9Yuan"
$price = preg_replace('/[^0-9.]/', '', $price); // Extraire la partie numérique
if (is_numeric($price)) {
$shippingLevel = ceil((float)$price / 10);
echo "Niveau d'expédition: " . $shippingLevel;
} else {
echo "Impossible d'identifier le prix du produit";
}
Dans ce scénario, le nettoyage des données d'entrée est la clé.
Dans les versions plus anciennes de PHP, le passage des types illégaux ne lance pas un avertissement, mais renvoie à la place le résultat d'erreur silencieusement. Pour éviter ce type de problème, il est recommandé d'utiliser la déclaration de type stricte de PHP et les capacités de rapport d'erreur:
declare(strict_types=1);
error_reporting(E_ALL);
ini_set('display_errors', '1');
Cela vous permet de détecter les problèmes potentiels le plus tôt possible, plutôt qu'une exception ne se produit qu'après que le système soit en ligne.
Ceil () est une fonction simple mais couramment utilisée, mais le problème de traitement de type caché derrière ne peut pas être ignoré. Grâce à un jugement, à la transformation et à l'encapsulation raisonnables, le code peut être rendu plus robuste et plus sûr, et les erreurs d'exécution potentielles peuvent être réduites. Surtout lors du traitement des données des utilisateurs ou des systèmes externes, n'oubliez pas de ne pas les transmettre directement dans des fonctions sensibles à type telles que ceil () , vérifiez-la d'abord, puis utilisez-la.