PHP:这些陈述是否相同? (文件已存在())

时间:2011-05-17 21:44:53

标签: php function

这些不等同吗?

== SCRIPT A ==

if (file_exists($file) == false) {
     return false;
}

== SCRIPT B ==

if(!file_exists($file)) {
     return false;
}

5 个答案:

答案 0 :(得分:7)

简单回答: Y E S

他们评价同样的事情。

第一个可能更适合这样:

if (file_exists($file) === false) { // === checks type and value
     return false;
}

或者:

return file_exists($file);

答案 1 :(得分:2)

是的,file_exists返回一个布尔值,所以它是true或false。

所以你也可以返回file_exists($ file)......

答案 2 :(得分:1)

如果你进行布尔比较,那么你宁愿这样做:

if (file_exists($file) === false) {
    return false;
}

使用===运算符,以确保您收到的内容是 boolean 类型的变量,其值等于 false

答案 3 :(得分:1)

但是如果你愿意的话:

if (file_exists($file) === false) {
    return false;
}

然后它将不同于:

if(!file_exists($file)) {
    return false;
}

因为在第一种情况下它将检查函数返回的值是否与严格匹配到false,在第二种情况下,函数返回的值将评估< / em>到布尔值。

修改

这是一般规则。

但是如果file_exists()函数返回布尔值,则不需要求布尔值,因此您可以使用严格条件,这将具有相同的结果(但仅在您知道<的情况下/ em>该值可以是truefalse

答案 4 :(得分:1)

如果你问“===和==运算符之间有什么区别”,那么:

'==='是一种严格的比较,用于检查双方的类型。 '=='是一个'等价'比较运算符,如果认为有必要,会将任何一方强制转换为适当的类型。

要展开,'=='可用于检查'falsey'值,'==='可用于检查完全匹配。

if (1 == TRUE) echo 'test';
>> "test"

if (1 === TRUE) echo 'test';
>>

如果你问两个代码块之间是否有任何功能/实际差异,那么没有,你应该这样返回:return file_exists($file);

值得一读: http://php.net/manual/en/language.operators.comparison.php