【发布时间】:2014-11-27 09:11:37
【问题描述】:
为了验证变量值,我们可以这样做
if(empty($var)){
}
或
这将在空字符串上返回 true,0 作为数字,false,null
if(!$var){
}
这两种方法有什么区别,它们是等价的吗?
编辑:一些表现不同的例子会更实用。
EDIT2:与答案的唯一区别是,如果 $var 未定义,第二个将引发通知。他们返回的布尔值呢?
EDIT3:对于 $var,我指的是任何具有任何值的变量,甚至是未定义的变量。
用户回答的结论:
if(!$var) 和 empty($var) 等效于此处描述的 http://php.net/manual/en/types.comparisons.php,它们将在同一变量上返回相同的布尔值。
if(!$var) 将在$var 未定义时返回一个php 通知,通常情况并非如此(如果我们编写好的代码)大多数IDE 会在它下划线。
- 检查简单变量时
if(!$var)应该没问题 - 检查数组索引 ($var['key']) 或对象属性 ($var->key) 时
empty($var['key'])最好使用空。
【问题讨论】:
-
@James 问题在于,由于 !$vars 比 empty($vars) 短,我们中的许多人会更喜欢第一种方式,但问题是它们总是等价的吗?
-
大部分答案都回忆起文档(有点模棱两可),实际示例最好显示它们在哪些值上表现不同
-
第二次编辑,see my comment。
-
@James 好的我明白你的意思,但我只是想在这里有一个更好的想法,从其他开发人员的经验,也许你在 php 文档中找不到的东西,例如 $mysqli ->如果你不刷新查询,multi_query 将不会运行查询,而且这个东西不是写在 php 文档中的。
-
@KarolyHorvath 你的意思是你的有用评论吧?因为我的只是讽刺而不是侮辱,请您给出答案
标签: php