PHP中array_key_exists()与isset()以及??的区别
- 5435
- PHP
- 27
- super_dodo
- 2016/11/21
PHP中array_key_exists用于检查某个键名是否存在于数组中,而isset也可以用于检测数组中某个键名是否存在,那么二者有什么区别呢?
一个基本的区别是isset()可用于数组和变量,而array_key_exits()只能用于数组。
但是最主要的区别在于在设定的条件下的返回值。现在我们来验证一下这个最主要的区别。
array_key_exists()
array_key_exists() 会检查键值的存在. 这个函数会返回TRUE,只要键值存在,即使值为NULL.
$arr = array( "one"=>"1", "two"=>"2", "three"=>null ); array_key_exists("one", $arr); // true array_key_exists("two", $arr); // true array_key_exists("three", $arr); // true
isset()
isset()和arrry_key_exitst()不同,isset()会同时检查键和值,只有当健存在,对应的变量不为NUll的时候才会返回TURE。
$arr = array( "one"=>"1", "two"=>"2", "three"=>null ); isset($arr["one"]); // true isset($arr["two"]); // true isset($arr["three"]); // false //补充一下isset的方法 $arr1 = []; if(isset($arr1)){ echo '存在数组<hr>'; }else{ echo '不存在数组<hr>'; } //结果:存在数组 $arr1 = ['a'=>'AAA','b'=>null]; if(isset($arr1['b'])){ echo '存在数组子项<hr>'; }else{ echo '不存在数组子项<hr>'; } //结果:不存在数组子项
在PHP7中可以使用??(双问号),得到的情况和isset基本一致
$arr = array( "one"=>"1", "two"=>"2", "three"=>null ); $flag = $arr["one"] ?? '不存在'; // 1 $flag = $arr["two"] ?? '不存在'; // 2 $flag = $arr["three"] ?? '不存在'; // 不存在
判断一个值的时候还是需要谨慎,细节地方可能隐藏着看不见的bug.
凭你的智慧,我很难跟你解释!——周星驰
- 第1章 Linux是什么 –《鸟哥的Linux》
- 手把手教你使用 Git (Git在windows下的使用)
- MySQL入门很简单—MySQL函数–数学函数
- MySQL中的varchar类型 char类型、text类型详解与区别
- 高性能MySQL–高可用性
- yii执行流程、目录结构、源码分析
- Yii2中Request请求(header post get hostInfo)相关说明
- 关于最近使用的MongoDB和PostgreSQL的一些比较和看法
- MySQL默认编码设置—(wamp2.4&2.5安装mysql5.5&5.6)
- PHP使用Yii2实现LinkedIn(Api)授权登录并获取信息Demo
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例