Maison  >  Article  >  développement back-end  >  Comment convertir une chaîne php en entier

Comment convertir une chaîne php en entier

藏色散人
藏色散人original
2021-03-22 09:32:444038parcourir

Comment convertir une chaîne PHP en type entier : 1. Utilisez la méthode "intval($num);" pour convertir le numéro de type chaîne en un nombre de type entier ; 2. Utilisez le code ascii pour convertir la chaîne ; tapez un nombre de type entier. Convertissez en type entier.

Comment convertir une chaîne php en entier

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Chaîne PHP en entier - N'utilisez pas les fonctions intégrées

Introduction

Si vous souhaitez convertir des nombres de type chaîne PHP en nombres entiers, nous utilisons généralement l'API intégrée du système pour effectuer la conversion , mais si la réglementation ne nous permet pas d'utiliser la conversion API intégrée au système, mais implémentons nous-mêmes une conversion de fonction, que devons-nous faire ? Nous voyons ici comment y parvenir.

Méthode API intégrée au système

$num = '345432123';
 
 //(一)
$num = (int)$num;
//输出:
//int(345432123)
 
//(二)
$num = intval($num);
//输出:
//int(345432123)

Utilisation de la méthode de code ASCII

Ensuite, nous utilisons la méthode de code ascii pour convertir, Parce que chaque caractère correspond à un code ASCII, lors de l'ajout, de la soustraction, de la multiplication et de la division de ce caractère, il s'agit en fait d'ajouter, de soustraire, de multiplier et de diviser le code ASCII, c'est-à-dire une opération entière, qui finira par renvoyer un nombre entier. .

[Apprentissage recommandé : Tutoriel vidéo PHP]

Les codes ASCII des caractères '0' ~ '9' sont 48~57. caractère '0' Par exemple : '1' - '0' = 1, '2' - '0' = 2 La valeur de retour est de type Int, voir l'implémentation du code ci-dessous.

function convertInt($strInt = ''){ 
    $len = strlen($strInt);  
    $int = 0;
 
    for($i=0;$i<$len;$i++){
        $int *= 10;            
        $num = $strInt{$i} - &#39;0&#39;;            
        $int += $num;        
    }
 
    return $int;        
}
 
 $num = &#39;345432123&#39;;    
 var_dump(convertInt($num)); //输出: int(345432123)
在 Redis 里面也有提供一个字符串转整型的函数,也是通过ascii码方式去做的,实现的比较完善严谨,具体可以参考下
string2ll 函数
#include <stdio.h>
#include <limits.h>
#include <string.h>
 
/* Convert a string into a long long. Returns 1 if the string could be parsed
 * into a (non-overflowing) long long, 0 otherwise. The value will be set to
 * the parsed value when appropriate. */
int string2ll(const char *s, size_t slen, long long *value) {
    const char *p = s;
    size_t plen = 0;
    int negative = 0;
    unsigned long long v;
 
    if (plen == slen)
        return 0;
 
    /* Special case: first and only digit is 0. */
    if (slen == 1 && p[0] == &#39;0&#39;) {
        if (value != NULL) *value = 0;
        return 1;
    }
 
    if (p[0] == &#39;-&#39;) {
        negative = 1;
        p++; plen++;
 
        /* Abort on only a negative sign. */
        if (plen == slen)
            return 0;
    }
 
    /* First digit should be 1-9, otherwise the string should just be 0. */
    if (p[0] >= &#39;1&#39; && p[0] <= &#39;9&#39;) {
        v = p[0]-&#39;0&#39;;
        p++; plen++;
    } else if (p[0] == &#39;0&#39; && slen == 1) {
        *value = 0;
        return 1;
    } else {
        return 0;
    }
 
    while (plen < slen && p[0] >= &#39;0&#39; && p[0] <= &#39;9&#39;) {
        if (v > (ULLONG_MAX / 10)) /* Overflow. */
            return 0;
        v *= 10;
 
        if (v > (ULLONG_MAX - (p[0]-&#39;0&#39;))) /* Overflow. */
            return 0;
        v += p[0]-&#39;0&#39;;
 
        p++; plen++;
    }
 
    /* Return if not all bytes were used. */
    if (plen < slen)
        return 0;
 
    if (negative) {
        if (v > ((unsigned long long)(-(LLONG_MIN+1))+1)) /* Overflow. */
            return 0;
        if (value != NULL) *value = -v;
    } else {
        if (v > LLONG_MAX) /* Overflow. */
            return 0;
        if (value != NULL) *value = v;
    }
    return 1;
}
 
//-------- 执行 ---------
int main(){
    long long num;
    string2ll("345432123",strlen("345432123"),&num);
    printf("%d\n",num); //输出 345432123
    retunr 0;
}

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!

Déclaration:
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