ホームページ >バックエンド開発 >PHPの問題 >PHPの文字列を整数に変換する方法

PHPの文字列を整数に変換する方法

藏色散人
藏色散人オリジナル
2021-03-22 09:32:444132ブラウズ

php 文字列を整数型に変換する方法: 1. "intval($num);" メソッドを使用して文字列型の数値を整数型の数値に変換します; 2. ASCII コードを使用して文字列を変換します整数型の数値に型を入力し、整数型に変換します。

PHPの文字列を整数に変換する方法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP-String to integer - 組み込み関数は使用しないでください

はじめに

PHP 文字列型の数値を整数値に変換したい場合、通常はシステムの組み込み API を使用して変換を行います。 , しかし、規制によりシステムの組み込み API 変換の使用は許可されていないが、関数変換を自分で実装することは許可されている場合はどうすればよいでしょうか?ここではそれを達成する方法を見ていきます。

システム組み込み API メソッド

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

ASCII コード メソッドを使用

次に、ASCII コード メソッドを使用して、各文字は ASCII コードに対応しているため、この文字を加算、減算、乗算、除算するとき、実際には ASCII コードの加算、減算、乗算、除算、つまり整数演算となり、最終的には整数。

[推奨学習: PHP ビデオ チュートリアル ]

文字 '0' ~ '9' の ASCII コードは 48 ~ 57 です。変換するときは、各文字 '0' を減算します。 例: '1' - '0' = 1、'2' - '0' = 2 戻り値は Int 型です。以下のコード実装を参照してください。

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

以上がPHPの文字列を整数に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。