5 回答
TA贡献2080条经验 获得超4个赞
我是这样理解的,if($value)他只会判断$value隐式转换的bool值,只能判断true或者false。而!empty需要非空非0才会返回true,就是变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及不是没有任何属性的对象。一般情况下他们判断是相等的,但是有些情况是不一样的,比如你这个$value是未定义的,第一个判断会报告一个警告,而!empty不会。
TA贡献1848条经验 获得超10个赞
先来看一下定义:
如果 $value 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var;以及没有任何属性的对象都将被认为是空的,如果 $value 为空,则返回 TRUE。
一般情况下差别不大,可以互用,只有一种情况下有区别:
如果$value没有定义,empty不会出错,而!$a会有个警告。
var_dump(empty($value));
var_dump(!$value); // 会提示 Notice: Undefined variable: value
TA贡献1806条经验 获得超8个赞
if (!empty($var)) 的情况:
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
总结:
有版本区分;
不会产生警告;
判空条件;
等价于
if (!isset($var) || $var == false)
;
参考:empty
if ($var) 的情况:
此种情况 $var
可能会发生隐式转换,即从其他类型转为 boolean
。
转换情况如下:
当然,如果 $var
未定义,从语法角度来说,会有 Notice
参考:Boolean 布尔类型
- 5 回答
- 0 关注
- 882 浏览
添加回答
举报