Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie einen PHP-String in eine Ganzzahl

So konvertieren Sie einen PHP-String in eine Ganzzahl

藏色散人
藏色散人Original
2021-03-22 09:32:444038Durchsuche

So konvertieren Sie eine PHP-Zeichenfolge in einen Ganzzahltyp: 1. Verwenden Sie die Methode „intval($num);“, um die Zeichenfolgentypnummer in eine Ganzzahltypnummer umzuwandeln. 2. Verwenden Sie den ASCII-Code, um den Zeichenfolgentyp in eine Ganzzahl umzuwandeln Typ. .

So konvertieren Sie einen PHP-String in eine Ganzzahl

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

PHP – Zeichenfolge in Ganzzahl – verwendet keine integrierten Funktionen

Einführung in den

php-String-Typ Wenn Sie möchten, verwenden wir beim Konvertieren von Zahlen in Ganzzahlen im Allgemeinen die integrierte API des Systems, um die Konvertierung durchzuführen. Was aber, wenn wir nicht die integrierte API des Systems zum Konvertieren verwenden dürfen, sondern uns stattdessen eine Funktionskonvertierung implementieren lassen? ? Hier sehen wir uns an, wie wir dies erreichen können.

Die integrierte API-Methode des Systems

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

verwendet die ASCII-Code-Methode

Jetzt verwenden wir die ASCII-Code-Methode zum Konvertieren, da jedes Zeichen einem ASCII-Code entspricht, wenn addiert, subtrahiert, multipliziert und Beim Teilen dieses Zeichens geht es in der Tat darum, Additions-, Subtraktions-, Multiplikations- und Divisionsoperationen für ASCII-Codes durchzuführen, also Ganzzahloperationen, die schließlich eine Ganzzahl zurückgeben.

[Empfohlenes Lernen: PHP-Video-Tutorial]

Zeichen '0' ~ '9' Der ASCII-Code ist 48~57. Bei der Konvertierung subtrahieren wir '0' von jedem Zeichen. Beispiel: '1' - '0' = 1, '2' - '0' = 2. Der Rückgabewert ist wie folgt vom Typ Int. Einzelheiten finden Sie in der Code-Implementierung.

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;
}

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie einen PHP-String in eine Ganzzahl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn