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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
php 代码优化之经典示例
Mar 24 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
Apr 20 PHP
php gd等比例缩放压缩图片函数
Jun 12 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
PHP解决高并发问题
Apr 01 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下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
python正则表达式re模块详细介绍
2014/05/29 Python
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
Django用户身份验证完成示例代码
2020/04/03 Python
python如何写出表白程序
2020/06/01 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
升职自荐信怎么写
2015/03/05 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
针对吵架老公保证书
2015/05/08 职场文书
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android