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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
第1次亲密接触PHP5(2)
Oct 09 PHP
用PHP实现登陆验证码(类似条行码状)
Oct 09 PHP
ip签名探针
Oct 09 PHP
PHP系统流量分析的程序
Oct 09 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
php使用codebase生成随机数
Mar 25 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
PHP实现SMTP邮件的发送实例
Sep 27 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
收音机指标测试方法及仪器
2021/03/01 无线电
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
Javascript复制实例详解
2016/01/28 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
js倒计时显示实例
2016/12/11 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
Python爬取梨视频的示例
2021/01/29 Python
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
JSF的标签库有哪些
2012/04/27 面试题
教师自荐信范文
2013/12/09 职场文书
师范教师毕业鉴定
2014/01/13 职场文书
合作意向书格式及范文
2014/03/31 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
银行转正自我鉴定
2014/09/29 职场文书
大学生学年个人总结
2015/02/15 职场文书
永远是春天观后感
2015/06/12 职场文书
2015年教师国培感言
2015/08/01 职场文书
岗位聘任协议书
2015/09/21 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
Java数据结构之堆(优先队列)
2022/05/20 Java/Android