0

可能重复:
是 !$page == false 还是 $page 在 php 中?

这两种支票有什么区别?哪种类型检查称为失败并返回 false 的函数或方法的正确方法?

if (!is_dir($path)) {...}

或者

if (is_dir($path) === false) {...}
4

4 回答 4

2
(!is_dir($path)){...}

IF is_dir($path)等于false。

(is_dir($path) === false){...}

IF is_dir($path) 的IDENTIFCAL为 false。这在 is_dir($path) 的结果必须是布尔 FALSE 值的意义上更明确。没有其他事情会做。

运行此示例:

<?php

$var = 0;

if($var == false){
    echo 'Var is EQUAL to FALSE.';
}

if($var === false){
    echo 'Var is IDENTICAL to FALSE.';
}

?>

在此处阅读比较运算符。

于 2012-11-18T11:44:21.153 回答
1

如果 $a 设置为 0,或者 $a 未设置,则 !$a 将为真。三等号严格检查是否为假,而不仅仅是空值。

于 2012-11-18T11:43:04.197 回答
0

运算符===是“同值同类型”比较。所以只有当已经是一个等于假的类型$foo === false时才为真,而将根据类型执行不同的操作(例如,如果是对象或资源,那么它会检查它是否为空值。如果它是一个字符串,那么它检查 null (我也认为是一个空字符串,但我不确定)。如果它是一个整数,那么它会检查它是否为零。基本上它在添加 bool 类型之前类似于 C 的运算符(其中 boolean价值观确实是价值观)。$foobool!$foo$foo$foo!int

在您的代码中,这两个示例都是“正确的”,尽管第一个示例使用!运算符是最简洁的,应该是首选。

于 2012-11-18T11:44:06.810 回答
0

我认为通过给出一些示例会更容易理解(您需要在命令提示符/终端中执行php命令)!不是逻辑运算符,它由 php 文档定义为“!如果 $a 不为 TRUE,则 $a 的结果为 TRUE。”

php -r "$a=NULL; $b = !$a; var_dump($b);"

返回布尔(真)

php -r "$a=''; $b = !$a; var_dump($b);"

返回布尔(真)

php -r "$a=array(); $b = !$a; var_dump($b);"

返回布尔(真)

php -r "$a=false; $b = !$a; var_dump($b);"

返回布尔(真)

php -r "$a=0; $b = !$a; var_dump($b);"

返回布尔(真)

php -r "$a=0.0; $b = !$a; var_dump($b);"

返回布尔(真)

php -r "$a='0'; $b = !$a; var_dump($b);"

返回布尔(真)

虽然 $a === false 只有当 $a 是实际的布尔值并且它的值为 false 时才会为真(所有其他先前的例子都将是错误的 ! 运算符)

php -r "$a=false; $b = $a === false; var_dump($b);"

返回布尔(真)

在您的示例中,只需使用 not 运算符!因为您不需要检查 is_dir 结果的类型。

于 2012-11-18T11:59:25.357 回答