PHP不使用内置函数intval(),实现字符串转整数
平时我们用PHP时,将字符串转化为整型时,一般都是使用 intval() 内置函数,那么如果我们自己写,怎么写一个呢?
此时我们可以利用 ASCII 码计算得整数的特性,因为每个字符都对应一个 ASCII 码,当对这个字符做加减乘除的时候,实际上就是对ASCII 码做加减乘除操作,也就是整型操作,最终会返回一个整型数字。
也就是说:
'1' - '0' = 1;
'2' - '0' = 2;
数字0~9对应的十进制ASCII码为:
数字 ASCII值
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
类似intval()函数的实现方法为:
//自定义字符串转int
function myIntval ($str = '')
{
$len = strlen($str);
$int = 0;
$negative = false;//是否是负数
for ($i = 0; $i < $len; $i++) {
//第一位字符判断 正负
if ($i == 0) {
if ($str[$i] == '-') {
$negative = true;
continue;
}
}
//判断字符是不是数字的ASCII码范围
if ($str[$i] < '0' || $str[$i] > '9') {
break;
} $int *= 10;
$num = $str[$i] - '0';//减去0的ASCII码就是数字本身[int类型]
$int = $int + $num;
}
$int = $negative === true ? -$int : $int;
return $int;
} var_dump(myIntval('-1tt01t34t')); //输出: int(-1)
var_dump(myIntval('-tt01t34t')); //输出: int(0)
var_dump(myIntval('tt01t34t')); //输出: int(0)
var_dump(myIntval('01t34t')); //输出: int(1)
var_dump(myIntval('134t')); //输出: int(134)
Note:
Redis 中的字符串转整型的函数也是基于ASCII相减去实现的。
PHP不使用内置函数intval(),实现字符串转整数的更多相关文章
- Freemarker 内置函数 数字、字符串、日期格式化用法介绍
在用FreeMarker过程中,感觉FreeMarker的字符串,日期,集合等处理能力还是很强大的,上网搜了一些资料,整理如下,以便能帮助大家更熟练的应用Freemarker完成项目开发. 一.Seq ...
- Python数据类型的内置函数之str(字符串)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) str(字符串)的一些操作 - 字符串相连方法 # 字符串的 ...
- 【SQL】MySQL内置函数中的字符串函数和日期时间函数
字符串函数 --拼接字符串组成新的字符串 Select concat(‘A’,’B’); --返回字符串长度 Select length(“CAT”) --返回子字符串在字符串中首次出现的位置,没有返 ...
- Python---基础----数据类型的内置函数(主要介绍字符串、列表、元组、字典、集合的内置函数)(二)
2019-05-24 -------------------------------- 一. # splitlines() 以换行切割字符串s = '''日照香炉生紫烟\n疑是银河落九天\n飞流 ...
- 【mysql】mysql内置函数
mysql常用内置函数 1.mysql字符串函数 contact 字符串连接函数 mysql>select contact("he",'llo');# hello lcase ...
- python基础之常用内置函数
前言 python有许多内置的函数,它们定义在python的builtins模块,在python的代码中可以直接使用它们. 常用的内置函数 类型转换 int python的整数类型都是int类型的实例 ...
- 巨蟒python全栈开发-第14天 内置函数2 递归 二分查找
一.今日内容总览 1.内置函数补充 repr() 显示出字符串的官方表示形式 chr() arscii码中的字,转换成位置 ord() arscii码中的位置,转换成字2.递归 自己调用自己 两个口: ...
- mysql 内置函数大全 mysql内置函数大全
mysql 内置函数大全 2013年01月15日 19:02:03 阅读数:4698 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代 ...
- Day3 - Python基础3 函数基本、递归函数、内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 2.2. 函数变量作用域 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1. 函数基本语法及 ...
随机推荐
- python基础-7模块,第三方模块安装方法,使用方法。sys.path os sys time datetime hashlib pickle json requests xml
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- 多线程11-AutoResetEvent
); Console.WriteLine()); t.Start(); Console.WriteLine()); ...
- maven build失败 (Failure to find io.renren:renren-security:pom:3.2.0 in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository...)
今天mvn clean package一个子工程(renren-admin)时报错: Failed to execute goal on project renren-admin: Could n ...
- Java多态性应用——多态数组、多态参数
多态数组: Person[] person = {new Person("张三", 32), new Student("李四", 21, 120, 90.0), ...
- [2019杭电多校第五场][hdu6624]fraction
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6624 题意为求最小的b满足$a*b^{-1}\equiv x(modp)$. 把式子化简一下: $a\ ...
- 1.go语言目录结构
[root@localhost ~]# ll /go/ total drwxr-xr-x. root root May : api -rw-r--r--. root root May : AUTHOR ...
- Runnable和Thread区别和比较
在很多博客中用这样一个例子来说明 Runnable更容易实现资源共享,能多个线程同时处理一个资源. 看代码: public static void main(String[] args) { new ...
- P1828 香甜的黄油 (spfa)
[题目描述] 农夫John知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛).给出各头牛在的牧场和牧场间的路线,找出使所有牛到达的路程和最短的牧场(他将把糖放在那). [题目链接] https ...
- nodejs、npm、 typescript、angular-cli安装
一.node.js环境安装 1.从Node.js官网下载对应平台的安装程序,进行安装,在Windows上安装时务必选择全部组件,包括勾选Add to Path. 2.安装完成后,打开window命令行 ...
- js string相关方法
1>concat() //合并返回新的字符串 var a="么么么么",b="ssss"; a.concat(b) //"么么么么ss ...