PHP 字符串长度判断效率更高的方法


Posted in PHP onMarch 02, 2014

有经验的程序员发现,php判断字符串长度,使用isset()在速度上比strlen()更快,执行效率更高。
即:

$str = ‘aaaaaa';
if(strlen($str) > 6)
VS
if(!isset($str{6})

用例子简单测试下,情况基本属实,isset()效率几乎是strlen()的3倍。
示例:
<?php
 //使用strlen方式
 $arr = "123456";
 $sTime = microtime(1);
 if(strlen($arr) > 6){
 // echo 1;
 }
 echo microtime(1) -  $sTime;

输出:0.00035595893859863
<?php
//使用isset($arr{})方式
 $arr = "123456";
 $sTime = microtime(1);
 if(!isset($arr{6})){
 // echo "1\r\n";
 }
 echo microtime(1) - $sTime;

输出:0.00019097328186035

isset()速度为什么比strlen()更快
strlen()函数函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。
在某些情况下,使用isset() 技巧可以加速执行你的代码。因为与isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。

因此调用isset()比strlen()快。

PHP 相关文章推荐
cache_lite试用
Feb 14 PHP
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
sae使用smarty模板的方法
Dec 17 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
PHP里的单例类写法实例
Jun 25 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
php微信开发之关键词回复功能
Jun 13 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
PHP常用header头定义代码示例汇总
Aug 29 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 #PHP
PHP代码优化之成员变量获取速度对比
Feb 28 #PHP
php递归方法实现无限分类实例代码
Feb 28 #PHP
PHP中常用的转义函数
Feb 28 #PHP
PHP中鲜为人知的10个函数
Feb 28 #PHP
php中调用其他系统http接口的方法说明
Feb 28 #PHP
PHP URL参数获取方式的四种例子
Feb 28 #PHP
You might like
用PHP编写PDF文档生成器
2006/10/09 PHP
第三节--定义一个类
2006/11/16 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
PDO::errorInfo讲解
2019/01/28 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
Python生成密码库功能示例
2017/05/23 Python
python实现BackPropagation算法
2017/12/14 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
如何用python免费看美剧
2020/08/11 Python
Python扫描端口的实现
2021/01/25 Python
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
业务经理的岗位职责
2013/11/16 职场文书
企业节能减排实施方案
2014/03/19 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
个人委托书如何写
2014/09/25 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js