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 相关文章推荐
QQ登录 PHP OAuth示例代码
Jul 20 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 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查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
js获得网页背景色和字体色的方法
2014/03/21 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
基于Vue实现拖拽功能
2020/07/29 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
python实现博客文章爬虫示例
2014/02/26 Python
快速查询Python文档方法分享
2017/12/27 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
tensorflow如何批量读取图片
2019/08/29 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
参赛口号
2014/06/16 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
公司承诺书格式范文
2015/04/28 职场文书
病假条格式范文
2015/08/17 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server