PHP 的 if ($value)
和 if (!emtpy($value))
有什么区别?
我是这样理解的,if($value)他只会判断$value隐式转换的bool值,只能判断true或者false。而!empty需要非空非0才会返回true,就是变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及不是没有任何属性的对象。一般情况下他们判断是相等的,但是有些情况是不一样的,比如你这个$value是未定义的,第一个判断会报告一个警告,而!empty不会。
先来看一下定义:
如果 $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
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
总结:
有版本区分;
不会产生警告;
判空条件;
等价于 if (!isset($var) || $var == false)
;
参考:empty
此种情况 $var
可能会发生隐式转换,即从其他类型转为 boolean
。
转换情况如下:
当然,如果 $var
未定义,从语法角度来说,会有 Notice
参考:Boolean 布尔类型
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答609 阅读✓ 已解决
798 阅读
http://php.net/manual/zh/type...