PHP中isset与array_key_exists的区别实例分析


Posted in PHP onJune 02, 2015

本文实例讲述了PHP中isset与array_key_exists的区别。分享给大家供大家参考。具体分析如下:

1.对于数组值的判断不同,对于值为null或''或false,isset返回false,array_key_exists返回true;

2. 执行效率不同,isset是内建运算符,array_key_exists是php内置函数,isset要快一些。请参考:PHP 函数实现原理及性能分析

3.当用isset访问一个不存在索引数组值时,不会引起一个E_NOTICE的php错误消息;

4.array_key_exists 会调用get_defined_vars判断数组变量是否存在,isset不用;

测试代码:

<?php
function 
microtime_float()
{
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
}
$test_arr['aa']='dd';
$test_arr['bb']='';
$test_arr['cc']=NULL;
$test_arr['dd']=false;
$test_arr= array('aa'=>'dd','bb'=>'','cc'=>null,'dd'=>false);
echo "isset aa is ";var_dump(isset($test_arr['aa']));echo "\n";
echo "isset bb is ";var_dump(isset($test_arr['bb']));echo "\n";
echo "isset cc is ";var_dump(isset($test_arr['cc']));echo "\n";
echo "isset dd is ";var_dump(isset($test_arr['cc']));echo "\n";
echo "isset none is ";var_dump(isset($test_arr['none']));echo "\n";
echo "key_exist aa is ";var_dump(array_key_exists('aa',$test_arr));echo "\n";
echo "key_exist bb is ";var_dump(array_key_exists('bb',$test_arr));echo "\n";
echo "key_exist cc is ";var_dump(array_key_exists('cc',$test_arr));echo "\n";
echo "key_exist dd is ";var_dump(array_key_exists('dd',$test_arr));echo "\n";
echo "key_exist none is ";var_dump(array_key_exists('none',$test_arr));echo "\n";
$time_start = microtime_float();
for($i=0;$i<100;$i++){
isset($test_arr['aa']);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "isset 100 is $time\n";
for($i=0;$i<10000;$i++){
isset($test_arr['aa']);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "isset 10000 is $time\n";
for($i=0;$i<1000000;$i++){
isset($test_arr['aa']);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "isset 1000000 is $time\n";
//++++++++++++++++++++++++++++++
$time_start = microtime_float();
for($i=0;$i<100;$i++){
array_key_exists('aa',$test_arr);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "array_key_exists 100 is $time\n";
for($i=0;$i<10000;$i++){
array_key_exists('aa',$test_arr);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "array_key_exists 10000 is $time\n";
for($i=0;$i<1000000;$i++){
array_key_exists('aa',$test_arr);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "array_key_exists 1000000 is $time\n";

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php session 检测和注销
Mar 16 PHP
劣质的PHP代码简化
Feb 08 PHP
PHP多个版本的分析解释
Jul 21 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 PHP
详解PHP素材图片上传、下载功能
Apr 12 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 03 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 #PHP
php获取指定范围内最接近数的方法
Jun 02 #PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 #PHP
php使用socket post数据到其它web服务器的方法
Jun 02 #PHP
php自动给网址加上链接的方法
Jun 02 #PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 #PHP
php正则preg_replace_callback函数用法实例
Jun 01 #PHP
You might like
php+mysql实现简单的增删改查功能
2015/07/13 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
Javascript this指针
2009/07/30 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
Python 正则表达式的高级用法
2016/12/04 Python
Python的语言类型(详解)
2017/06/24 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
python3.4实现邮件发送功能
2018/05/28 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
postman和python mock测试过程图解
2020/02/22 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python如何重新加载模块
2020/07/29 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
网络教育毕业生自我鉴定
2013/10/10 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
党建工作整改措施
2014/10/28 职场文书
作弊检讨书
2015/01/27 职场文书
紧急通知
2015/04/17 职场文书
中秋节随笔
2015/08/15 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
交通事故协议书范本
2016/03/19 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang