为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 的 if ($value) 和 if (!emtpy($value)) 有什么区别?

PHP 的 if ($value) 和 if (!emtpy($value)) 有什么区别?

PHP
开心每一天1111 2019-03-18 16:57:02
PHP 的 if ($value) 和 if (!emtpy($value)) 有什么区别?
查看完整描述

5 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

我是这样理解的,if($value)他只会判断$value隐式转换的bool值,只能判断true或者false。而!empty需要非空非0才会返回true,就是变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及不是没有任何属性的对象。一般情况下他们判断是相等的,但是有些情况是不一样的,比如你这个$value是未定义的,第一个判断会报告一个警告,而!empty不会。

查看完整回答
反对 回复 2019-03-18
?
慕桂英546537

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

查看完整回答
反对 回复 2019-03-18
?
慕森卡

TA贡献1806条经验 获得超8个赞

if (!empty($var)) 的情况:

https://img1.sycdn.imooc.com//5c8f5d5c000117cc08000237.jpg

以下的东西被认为是空的:

  • "" (空字符串)

  • 0 (作为整数的0)

  • 0.0 (作为浮点数的0)

  • "0" (作为字符串的0)

  • NULL

  • FALSE

  • array() (一个空数组)

  • $var; (一个声明了,但是没有值的变量)

总结:

  1. 有版本区分;

  2. 不会产生警告;

  3. 判空条件;

  4. 等价于 if (!isset($var) || $var == false)

参考:empty

if ($var) 的情况:

此种情况 $var 可能会发生隐式转换,即从其他类型转为 boolean
转换情况如下:
https://img1.sycdn.imooc.com//5c8f5d5e0001abf508000504.jpg

当然,如果 $var 未定义,从语法角度来说,会有 Notice

参考:Boolean 布尔类型

查看完整回答
反对 回复 2019-03-18
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

如果$value没有定义,!$value会报错

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 882 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信