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 相关文章推荐
基于Zend的Config机制的应用分析
May 02 PHP
解析htaccess伪静态的规则
Jun 18 PHP
三种php连接access数据库方法
Nov 11 PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 PHP
php导入excel文件到mysql数据库的方法
Jan 14 PHP
php强制用户转向www域名的方法
Jun 19 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
php微信开发之谷歌测距
Jun 14 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
ajax 的post方法实例(带循环)
2011/07/04 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
解析Python中while true的使用
2015/10/13 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
python配置文件写入过程详解
2019/10/19 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
教师个人鉴定材料
2014/02/08 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
2014年商场工作总结
2014/11/22 职场文书
医院科室评语
2015/01/04 职场文书
小学见习报告
2015/06/23 职场文书
JS函数式编程实现XDM一
2022/06/16 Javascript