일반적으로 PHP 문자열 유형 숫자를 정수로 변환하려면 시스템에 내장된 API를 사용하여 변환합니다. 그러나 다음 문서에서는 PHP가 문자열을 변환하기 위해 내장 함수를 사용하지 않는 방법을 주로 소개합니다. 해당 유형의 메소드 예제가 기사에 자세히 소개되어 있습니다. 필요한 친구들은 함께 살펴보겠습니다.
소개
PHP 문자열 유형 숫자를 정수로 변환하려는 경우 일반적으로 시스템에 내장된 API를 사용하여 변환하지만, 규정에 따라 시스템에 내장된 API를 사용하는 것이 허용되지 않는 경우 API에서 변환하는 대신 함수 변환을 직접 구현하려면 어떻게 해야 합니까? 여기서는 이를 달성하는 방법을 살펴보겠습니다.
시스템 내장 API 방법
$num = '345432123'; //(一) $num = (int)$num; //输出: //int(345432123) //(二) $num = intval($num); //输出: //int(345432123)
ASCII 코드 방법 사용
다음으로 변환을 위해 ASCII 코드 방법을 사용합니다. 각 문자는 ASCII에 해당하기 때문입니다. code, 이 문자를 더하고 빼고 곱하고 나누면 실제로는 ASCII 코드의 더하기, 빼기, 곱하기, 나누기, 즉 정수 연산이 되어 결국 정수가 반환됩니다. 인터넷에서 전송됨 -
via 위 그림에서 볼 수 있듯이 문자 '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} - '0'; $int += $num; } return $int; } $num = '345432123'; var_dump(convertInt($num)); //输出: int(345432123)
Redis에도 함수가 있습니다. 문자열을 정수 유형으로 변환하는 작업은 상대적으로 완전하고 엄격합니다. 자세한 내용은
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] == '0') { if (value != NULL) *value = 0; return 1; } if (p[0] == '-') { 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] >= '1' && p[0] <= '9') { v = p[0]-'0'; p++; plen++; } else if (p[0] == '0' && slen == 1) { *value = 0; return 1; } else { return 0; } while (plen < slen && p[0] >= '0' && p[0] <= '9') { if (v > (ULLONG_MAX / 10)) /* Overflow. */ return 0; v *= 10; if (v > (ULLONG_MAX - (p[0]-'0'))) /* Overflow. */ return 0; v += p[0]-'0'; 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 정수
숫자로 변환: 101로 변환
sql CONVERT() String정수 유형으로 변환
PHP는 내장 함수를 사용하지 않고 문자열 정수 유형으로의 변환
위 내용은 내장 함수를 사용하지 않고 PHP에서 문자열을 정수로 변환하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!