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 获取客户端的真实ip
Nov 30 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
深入解析php中的foreach问题
Jun 30 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
PHP学习笔记之session
May 06 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
PHP后门隐藏的一些技巧总结
Nov 04 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
PHP 基本语法格式
2009/12/15 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
python从sqlite读取并显示数据的方法
2015/05/08 Python
python使用psutil模块获取系统状态
2016/08/27 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
python Django 创建应用过程图示详解
2019/07/29 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
python实现扫雷游戏的示例
2020/10/20 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
公司培训心得体会
2014/01/03 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
三八妇女节致辞
2015/07/31 职场文书
学雷锋感言
2015/08/03 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers