如何判定PHP数组是否为空

昨天做模版的时候,碰着个关于数组的问题,或许是这样的:提取文章中所有的标签,并把它们放到一个数组中,然后提取这个数组的中随机的一个标签,并在SQL数据库中提取这个标签的文章。

或许的代码如下所示:

$tap = array(); $tap = array_rand($tap);

可是在调试的时候,假如文章中没有标签数据,则会呈现这个错误,借误如下:

array is empty

这里说一下,我用的PHP5.2版本没有发明这个错误,可是php7.0版本上就会呈现这个错误并阻止页面的加载

厥后加一个判定数组是否为空,这个错误就办理了

如何判定PHP数组是否为空

关于判读PHP数组是否为空的几种要领:

isset成果:判定变量是否被初始化

说明:它并不会判定变量是否为空,而且可以用来判定数组中元素是否被界说过

留意:当利用isset来判定数组元素是否被初始化过期,它的效率比array_key_exists高4倍阁下

<?php $a = ''; $a['c'] = ''; if (!isset($a)) echo '$a 未被初始化' . ""; if (!isset($b)) echo '$b 未被初始化' . ""; if (isset($a['c'])) echo '$a 已经被初始化' . ""; // 显示功效为 // $b 未被初始化 // $a 已经被初始化empty成果:检测变量是否为”空”

说明:任何一个未初始化的变量、值为 0 或 false 或 空字符串”" 或 null的变量、空数组、没有任何属性的工具,都将判定为empty==true

留意1:未初始化的变量也能被empty检测为”空”

留意2:empty只能检测变量,而不能检测语句

<?php $a = 0; $b = ''; $c = array(); if (empty($a)) echo '$a 为空' . ""; if (empty($b)) echo '$b 为空' . ""; if (empty($c)) echo '$c 为空' . ""; if (empty($d)) echo '$d 为空' . "";var == null成果:判定变量是否为”空”

说明:值为 0 或 false 或 空字符串”" 或 null的变量、空数组、都将判定为 null

留意:与empty的显著差异就是:变量未初始化时 var == null 将会报错。

<?php $a = 0; $b = array(); if ($a == null) echo '$a 为空' . ""; if ($b == null) echo '$b 为空' . ""; if ($c == null) echo '$b 为空' . ""; // 显示功效为 // $a 为空 // $b 为空 // Undefined variable: cs_null成果:检测变量是否为”null”

说明:当变量被赋值为”null”时,检测功效为true

留意1:null不区分巨细写:$a = null; $a = NULL 没有任何区别

留意2:仅在变量的值为”null”时,检测功效才为true,0、空字符串、false、空数组都检测为false

留意3:变量未初始化时,措施将会报错

<?php $a = null; $b = false; if (is_null($a)) echo '$a 为NULL' . ""; if (is_null($b)) echo '$b 为NULL' . ""; if (is_null($c)) echo '$c 为NULL' . ""; // 显示功效为 // $a 为NULL // Undefined variable: cvar === null成果:检测变量是否为”null”,同时变量的范例也必需是”null”

说明:当变量被赋值为”null”时,同时变量的范例也是”null”时,检测功效为true

留意1:在判定为”null”上,全便是和is_null的浸染沟通

留意2:变量未初始化时,措施将会报错

总结:

PHP中,”NULL” 和 “空” 是2个观念。

isset 主要用来判定变量是否被初始化过

empty 可以将值为 “假”、”空”、”0″、”NULL”、”未初始化” 的变量都判定为TRUE

is_null 仅把值为 “NULL” 的变量判定为TRUE

var == null 把值为 “假”、”空”、”0″、”NULL” 的变量都判定为TRUE

var === null 仅把值为 “NULL” 的变量判定为TRUE

留意:在判定一个变量是否真正为”NULL”时,大多利用 is_null,从而制止”false”、”0″等值的滋扰。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9691.html