in_array 和 isset的效率
Posted 北方的刀郎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了in_array 和 isset的效率相关的知识,希望对你有一定的参考价值。
in_array的效率
in_array函数是个糟糕的选择。应该尽量用isset函数或array_key_exists函数来替代 。in_array函数的复杂度是O(n),而isset函数的复杂度是O(1)
isset函数是检测变量是否设置。
返回值:
若变量不存在则返回FALSE
若变量存在且其值为NULL,也返回FALSE
若变量存在且值不为NULL,则返回TURE
同时检查多个变量时,每个单项都符号上一条要求时才返回TRUE,否则结果为FALSE
PHP的empty()函数
格式:bool empty(mixed var)
功能:检查一个变量是否为空
返回值:
若变量不存在则返回TRUE
若变量存在且值为""、0、"0"、NULL、、FALSE、array()、var $var;以及没有任何属性的对象,则返回TURE
若变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var;以及没有任何属性的对象,则返回FALSE
empty()只能用于变量,传递任何其它参数都将造成Paser error而终止运行
检测常量是否已设置可使用defined()函数。
empty() 与 isset() 的一个简单比较
1 <?php 2 $var = 0; 3 // 结果为 true,因为 $var 为空 4 if (empty($var)) 5 echo '$var is either 0 or not set at all'; 6 7 // 结果为 false,因为 $var 已设置 8 if (!isset($var)) 9 echo '$var is not set at all'; 10 11 ?>
当要判断一个变量是否已经声明的时候可以使用isset函数
当要判断一个变量是否已经赋予数据且补位空,可以用empty函数
当要判断一个变量存在且不为空,先isset函数,再用empty函数
以上是关于in_array 和 isset的效率的主要内容,如果未能解决你的问题,请参考以下文章
判断数组中有没有某个键 isset 和 array_key_exists 的效率比较