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 相关文章推荐
ip签名探针
Oct 09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
php模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
Symfony控制层深入详解
Mar 17 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 PHP
php array_chunk()函数用法与注意事项
Jul 12 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
Python更换pip源方法过程解析
2020/05/19 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
经贸韩语专业大学生职业规划
2014/02/14 职场文书
行政助理工作职责范本
2014/03/04 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
赔偿协议书范本
2014/04/15 职场文书
平安工地建设方案
2014/05/06 职场文书
体育馆的标语
2014/06/24 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
2015年导购员工作总结
2015/04/25 职场文书
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python