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 相关文章推荐
用 PHP5 轻松解析 XML
Dec 04 PHP
PHP 遍历文件实现代码
May 04 PHP
php教程之phpize使用方法
Feb 12 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
php正则表达式学习笔记
Nov 13 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
PHP调用接口API封装的例子
Oct 11 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
Feb 11 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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解析html的实现代码
2011/08/08 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP常用技巧汇总
2016/03/04 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
jquery validate demo 基础
2015/10/29 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
Python中list初始化方法示例
2016/09/18 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
10个示例带你掌握python中的元组
2020/11/23 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
消防先进事迹材料
2014/02/10 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技