Est-ce que nous nous dirigeons tout droit sur le camp d'expressions régulières ou y a-t-il une belle fonctionnalité pratique pour cela déjà? P>
merci! p> is_numeric () code> ainsi que
is_int () code> renvoie false si la valeur est 0. Que puis-je faire plutôt pour vérifier qu'une valeur spécifique n'est que dans PHP ? p>
7 Réponses :
Cela me rend vrai pour moi dans les deux cas: résultat: strong> p>
Très étrange. Vous n'avez aucune idée de la raison pour laquelle mon environnement de test (Windows) retourne faux.
var_dump(is_int("0")); Will pass false because you are passing it the zero as a string literal. You could try passing the same thing as a variable which has gone through (I believe) parseInt("");Though my php may be a little off, having been Javascripting nonstop the last week or two.
Salut! La chaîne n'est pas passée comme une chaîne.
@Industrial c'est un paradoxe;)
@Gordon Duh. C'était un pour le mur de la gloire définitivement. La valeur qui est passée n'était pas une chaîne, mais seulement un nombre. J'espère que cela le rendit compréhensible;)
zéro, comme un entier est vide. Assurez-vous donc qu'il n'y a pas de chèque pour Vide avant de vérifier IS_Numeric () ou IS_INT () P>
Merci! Étonnamment c'est exactement ce que je faisais! :)
Lorsque vous faites face à la demande, vérifiez d'abord l'entrée en utilisant Filter_Input. Voici un exemple de contrôle 'ID' à partir de $ _GET.
if (is_int(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))) { $id = $_GET['id']; } else { die('please input a integer'); }
J'ai mûr au même problème, et cela a eu lieu qu'il y avait un espace après le numéro.
Longue histoire courte, quel que soit le numéro: p>
Array ( [0] => 1.200000 [1] => 123.456000 ) _ScreenCoordinates:1.200000 , 123.456000 myarr[0]:*1.200000 * - NO myarr[1]:* 123.456000* - YES trimmed[0]:*1.200000 * - YES
Ceci peut aussi se produire si ce 0 code> est un
faux code> en fait.
is_numeric () code> retourne toujours
false code> pour boolean. p>
if($price != 0) { if(is_numeric($price)) { $price = $price; // numeric } else { // is not numeric } } else { $price = $price; // 0 as numeric }
Formatez votre réponse correctement et vous n'avez vraiment pas besoin de répondre à une question de 7 ans qui a une réponse acceptée.
Non seulement cette réponse n'a aucun sens, il y a une erreur de syntaxe pour démarrer.
Pas de reproduction,
is_numeric (0) code> retourne
bool (vrai) code> pour moi. la même chose avec
is_int code>
@Industrial: Êtes-vous sûr? ideone.com/h5csa
Vous êtes sûr que ce n'est pas une lettre o au lieu d'un zéro?
Je suis vrai sur les deux si j'utilise $ var = 0; - Mind affichant du code?
Éventuellement lié ... langage différent mais problème similaire: Stackoverflow.com/Questtions/691199/c-Parse-String-0-a-Iserg ER / ...
@Industrial: Quelle version de PHP utilisez-vous? Certaines versions plus anciennes pourraient être correctement renvoyées.
Merci de m'avoir votté. J'ai bien sûr vérifié que c'est un 0 (zéro) d'abord.
Redémarrez PHP sur le serveur et cela fonctionne bien maintenant. N'ont aucune idée de la raison pour laquelle cela se produisait. Merci tout le monde pour leur aide!