Ce que cet article vous apporte, c'est de vous présenter la méthode de conversion d'une chaîne en entier en PHP (exemple de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Description du problème
Convertir une chaîne en entier (implémenter la fonction Integer.valueOf(string), mais renvoyer 0 lorsque la chaîne ne répond pas aux exigences numériques), il est nécessaire qu'une bibliothèque qui ne peut pas utiliser de chaînes pour convertir des entiers, c'est une fonction requise. Si la valeur est 0 ou si la chaîne n'est pas une valeur légale, 0 est renvoyé.
Exemple 1 :
Entrée : +2147483647
a33
Sortie : 2147483647
0
Pensée :
1. Traiter les signes négatifs
2. Traiter les signes positifs
3. Les chaînes contenant des caractères non numériques renvoient directement le caractère 0
4.'0'. le code est 48
4. Parcourez la chaîne et commencez à numériser à partir de la position 0. Le code ascii du caractère numérique actuel moins le code ascii du caractère « 0 » doit être l'entier de la position actuelle
Algorithme :
StrToInt(str) if empty(str) return 0 symbol=1 if str[0]=='+' symbol=1; str[0]='0' if str[0]=='-' symbol=-1; str[0]='0' res=0 for i=0;i<str.size;i++ if(str[i]<'0' || str[i]>'9') //包含非数字字符的,直接返回0 res=0 break; res=res*10+str[i]-'0' //进位用和ascii相减算出整型数字 res=symbol*res //加上正负号 return res
implémentation php (exemple de code) :
<?php function StrToInt($str){ if (empty($str)){return 0;} $symbol=1; if ($str{0}=='+'){ $symbol=1; $str{0}='0'; } if ($str[0]=='-'){ $symbol=-1; $str{0}='0'; } $res=0; for ($i=0;$i<strlen($str);$i++){ if($str{$i}<'0' || $str{$i}>'9'){ //包含非数字字符的,直接返回0 $res=0; break; } $res=$res*10+$str{$i}-'0'; //进位用和ascii相减算出整型数字 } $res=$symbol*$res; //加上正负号 return $res; } $s="-123"; $res=StrToInt($s); var_dump($res);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!