PHP implémente une méthode pour convertir une chaîne en entier (exemple de code)

青灯夜游
Libérer: 2023-04-04 11:10:02
avant
2766 Les gens l'ont consulté

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]<&#39;0&#39; || str[i]>'9') //包含非数字字符的,直接返回0
            res=0 break;
        res=res*10+str[i]-'0'  //进位用和ascii相减算出整型数字
    res=symbol*res //加上正负号
    return res
Copier après la connexion

implémentation php (exemple de code) :

<?php
function StrToInt($str){
        if (empty($str)){return 0;} 
        $symbol=1;
        if ($str{0}==&#39;+&#39;){ 
                $symbol=1; 
                $str{0}=&#39;0&#39;;
        }   
        if ($str[0]==&#39;-&#39;){
                $symbol=-1; 
                $str{0}=&#39;0&#39;;
        }   
        $res=0;
        for ($i=0;$i<strlen($str);$i++){
                if($str{$i}<&#39;0&#39; || $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);
Copier après la connexion

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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal