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

发布于 2022-09-06 04:40:22 字数 79 浏览 19 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

空宴 2022-09-13 04:40:22

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

半窗疏影 2022-09-13 04:40:22

先来看一下定义:
如果 $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

耳根太软 2022-09-13 04:40:22

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

clipboard.png

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

  • "" (空字符串)

  • 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
转换情况如下:
clipboard.png

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

参考:Boolean 布尔类型

美羊羊 2022-09-13 04:40:22

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文