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下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
php ci框架验证码实例分析
Jun 26 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
PHP实现文件下载详解
Nov 27 PHP
php生成zip文件类实例
Apr 07 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
PHP实现的简单操作SQLite数据库类与用法示例
Jun 19 PHP
laravel 解决crontab不执行的问题
Oct 22 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
XAMPP安装与使用方法详细解析
2013/11/27 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
layui实现数据分页功能
2019/07/27 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
Python httplib模块使用实例
2015/04/11 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
python重要函数eval多种用法解析
2020/01/14 Python
python设置环境变量的作用整理
2020/02/17 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
python 发送get请求接口详解
2020/11/17 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
do you have any Best Practice for testing
2016/06/04 面试题
质检员的岗位职责
2013/11/15 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
公司承诺书范文
2014/05/19 职场文书
车辆年检委托书范本
2014/10/14 职场文书
慰问信模板
2015/02/14 职场文书
英语教师求职信范文
2015/03/20 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
python中urllib包的网络请求教程
2022/04/19 Python