一个学习PHP的家伙给我发了一些令我挠头的代码。他得到$_POST
输入,把它放在变量中,然后:
if( !empty($id && $name && $email) ) {
//do something
}
我的第一个倾向是将多个变量作为参数传递会引发错误,但它会成功评估。我不正确empty()
不应该采用布尔表达式吗?或者 - 如果我是对的 - 为什么它会起作用?
答案 0 :(得分:3)
你可以将表达式传递给empty
而不是变量(从PHP 5.5开始),但是使用类似的表达式会失去使用empty
的一半好处。 empty
检查变量是否已设置以及评估其“真实性”。当你给它一个这样的表达式时,表达式中的各个变量被<{1}} not 检查为存在。表达式只是作为布尔值计算。
因此,如果您使用单独的empty
检查,您将检查变量是否存在以及检查它们是empty
!= false
但是当你使用
时if(!empty($id) && !empty($name) && !empty($email))
如果设置了所有变量并且具有非假值,您仍将进入if (!empty($id && $name && $email))
块,但如果未设置任何变量,您将获得未定义的变量通知。它与完全不使用if
基本相同,如下所示:
empty
但如果你的家伙从if ($id && $name && $email)
设置这些变量,他们将设置,(如果他们不在$_POST
他会得到未定义的索引警告那一点)和$_POST
无论如何都是毫无意义的。