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程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
php检测url是否存在的方法
Apr 14 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
Mar 06 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
php中引用符号(&amp;)的使用详细介绍
Dec 06 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 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写的小东西
2006/12/06 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
JavaScript修改css样式style
2008/04/15 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
Vue实现active点击切换方法
2018/03/16 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
SVM基本概念及Python实现代码
2017/12/27 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
python hashlib加密实现代码
2019/10/17 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
装潢设计专业推荐信模板
2013/11/26 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
服务之星获奖感言
2014/01/21 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
导游词之河北野三坡
2019/12/11 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL