PHP中array_key_exists()与isset()以及??的区别
- 5864
- 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.
凭你的智慧,我很难跟你解释!——周星驰
相关阅读
- 通过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的使用示例