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函数

原文地址:https://www.cnblogs.com/cjjjj/p/9999989.html