昨天,我发布了一个answer问题,其中包括几个(当时未知的)非常不好的代码示例。从那以后,我一直在看我的PHP基础知识,这让我认为这样的代码是可能的。这使我想到,我似乎无法找到一个问题的答案:这是一个很好的测试,看看是否设置了一个变量
如果我要检查一个变量是否已经设置什么,是一个有效的做法是不使用或isset()
另一帮手功能?这里有一个“实例”:
if($not_set){
//do something
} else {
//do something else
}
不是...
if(isset($not_set)){
//do something
} else {
//do something else
}
从变量的名称,你可以看到这个变量没有设置。因此,条件将是错误的,并且else
部分将运行。到目前为止,我一直在使用这种做法,但在昨天的帖子后,我现在有一个暗示,这是错误的。
这就是为什么我认为这是一个不错的做法,省略了上面的isset()
函数。从PHP手册:
if结构是很多语言的最 重要的特性之一,包括 PHP。它允许 条件执行代码 片段。 PHP设有如果 结构,它是类似于的 C:
如果(表达式)语句
正如在节约 表达式所描述的,表达被评估 其布尔值。如果表达式 的计算结果为TRUE,则PHP将执行 语句,如果它的计算结果为 FALSE - 它将忽略它。更多 有关将 设置为FALSE的值的信息可在 “转换为布尔值”部分找到。
而且从 '转换为布尔值一节':
当转换为boolean ,以下值被认为是 FALSE:
... *特殊类型NULL(包括未设置的变量)
为什么手册不能说明未设置变量如果这是一个不好的做法,包括bles?如果未设置,它将转换为NULL,因此可以通过条件进行正确评估。使用isset()
将会找到相同的结果,但会花费额外的周期来完成。
有人能告诉我我整个过程是否错误,为什么? (也许它有多糟?)
谢谢,所以你永远不会失望。
编辑:谢谢大家(这很快)。我真的认为迄今为止所有的答案都很好,不知道应该选择哪个答案......如果你没有选中,我仍然会赞成:o)
好吧
null
一样好,你的做法*会*捕未设置变量,但它也会捕获* *设置的其他变量。所以这不是一个真正的变量被设置的测试 – Gareth 2010-07-20 23:23:07另请参阅http://stackoverflow.com/questions/1960509/isset-and-empty-make-code-ugly – deceze 2010-07-20 23:25:37
嘿欺骗!感谢昨天的一切 - 我的PHP理解有了巨大的飞跃(如你所见)。我在搜寻时没有看到那个,但是我想的基本上是一样的。 – Tim 2010-07-20 23:31:02