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的效率的主要内容,如果未能解决你的问题,请参考以下文章

PHP中in_array 效率极其优化

php isset()和 in_array()

判断元素是否存时,使用isset会比in_array快得多

判断数组中有没有某个键 isset 和 array_key_exists 的效率比较

PHP 中数组函数 isset 效率比 array_key_exists 更高

php in_array() 循环大量数组时效率特别慢问题