Dans la programmation PHP, la fonction CEIL () est une fonction mathématique couramment utilisée qui arrondit un nombre vers le haut, c'est-à-dire renvoie le plus petit entier supérieur ou égal au nombre. La fonction est définie comme suit:
float ceil ( float $value )
Habituellement, les arguments de la fonction ceil () sont un type numérique ou une chaîne qui peut être automatiquement convertie en numérique par PHP. Mais que se passe-t-il si les caractères chinois entrants ou les cordes illégales? Cet article explorera en détail comment la fonction CEIL () fonctionne sous ces entrées et comment elle traite des entrées non nucères.
Exemple d'appel simple:
<?php
echo ceil(4.2); // Sortir 5
echo ceil(-3.7); // Sortir -3
?>
Ceil () arrond le numéro de point flottant vers le haut, faites attention au traitement des nombres négatifs. Le résultat de l'arrondissement vers le haut est un entier avec une valeur plus grande (comme -3,7 arrondi vers le haut à -3).
<?php
echo ceil("Chinois"); // ?
echo ceil("abc123"); // ?
echo ceil("123abc"); // ?
?>
PHP essaiera de convertir les paramètres de fonction en type, et les paramètres reçus par ceil () seront convertis en flotteurs . Pendant le processus de conversion, PHP tentera d'analyser les caractères numériques du début de la chaîne et d'arrêter de se convertir lorsque le premier caractère numérique illégal est rencontré. Si le début de la chaîne ne peut pas être converti en nombre, le résultat est 0.
Les manifestations spécifiques sont les suivantes:
"Chinois" : Le début de la chaîne est un caractère non numérique et converti en un numéro de point flottant à 0, donc le résultat du plaque ("chinois") est de 0.
"ABC123" : commence également par un non-nombre, le résultat de conversion est 0 et renvoie 0.
"123ABC" : La chaîne commence par le numéro 123. Lorsque A est rencontré, la conversion est arrêtée et convertie en 123. Le résultat de CEIL ("123ABC") est 123.
Exemple de code:
<?php
var_dump(ceil("Chinois")); // float(0)
var_dump(ceil("abc123")); // float(0)
var_dump(ceil("123abc")); // float(123)
?>
Sortir:
float(0)
float(0)
float(123)
Bien que PHP autorise les conversions implicites des types ci-dessus, dans les projets réels, passer des chaînes non nucères à ceil () devrait être évitée pour éviter des résultats inattendus.
Utiliser is_numeric () pour détecter si l'entrée est un nombre :
<?php
$input = "Chinois";
if (is_numeric($input)) {
echo ceil($input);
} else {
echo "L'entrée n'est pas un nombre,Impossible de trier";
}
?>
Utilisez filter_var () pour le filtrage plus strict :