博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP不使用内置函数intval(),实现字符串转整数
阅读量:4311 次
发布时间:2019-06-06

本文共 1199 字,大约阅读时间需要 3 分钟。

平时我们用PHP时,将字符串转化为整型时,一般都是使用 intval() 内置函数,那么如果我们自己写,怎么写一个呢?

此时我们可以利用 ASCII 码计算得整数的特性,因为每个字符都对应一个 ASCII 码,当对这个字符做加减乘除的时候,实际上就是对ASCII 码做加减乘除操作,也就是整型操作,最终会返回一个整型数字。

也就是说:

'1' - '0' = 1;
'2' - '0' = 2;

数字0~9对应的十进制ASCII码为:

数字 ASCII值 0    481    492    503    514    525    536    547    558    569    57

类似intval()函数的实现方法为:

//自定义字符串转intfunction 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相减去实现的。

 

转载于:https://www.cnblogs.com/deverz/p/11076453.html

你可能感兴趣的文章
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day06
查看>>
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>
matplotlib绘图跳过时间段的处理方案
查看>>
vnpy学习_04回测评价指标的缺陷
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>
Eclipse : An error occurred while filtering resources(Maven错误提示)
查看>>
在eclipse上用tomcat部署项目404解决方案
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>