的是这两种检查的区别?哪种类型检查的正确方式称为失败并返回false的函数或方法?
if (!is_dir($path)) {...}
或
if (is_dir($path) === false) {...}
的是这两种检查的区别?哪种类型检查的正确方式称为失败并返回false的函数或方法?
if (!is_dir($path)) {...}
或
if (is_dir($path) === false) {...}
$!如果$ a设置为0,一个为真,或者如果$ a未设置。三重等号严格检查错误,而不仅仅是空值。
===
运算符是“相同值和相同类型”的比较。因此$foo === false
只有在$foo
已经是bool
类型等于false的情况下才为真,而!$foo
将根据$foo
的类型执行不同的操作(例如,如果$foo
是对象或资源,则它将检查它是否为空值。如果它是一个字符串,那么它会检查null(我认为它也是一个空字符串,但是我不确定)如果它是一个整数,那么它会检查它是否为零基本上它的作用类似于C的!
运算符,加入bool类型(其中,布尔值真的int
值)。
在代码中,这两个示例是“正确的”,尽管第一示例中,使用操作者!
,是最简洁的,并应是优选的。
(!is_dir($path)){...}
IF is_dir($ PATH)是EQUAL为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.';
}
?>
阅读上比较运营商here。
我觉得通过举一些例子会更容易理解(你需要在命令提示符/终端中执行php命令) !不是逻辑运算符,它是由php文档定义为“!$ a有Result 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是实际工作bollean,其价值将是真实的是虚假的(所有其他先例的例子将是错误的!运营商)
php -r "$a=false; $b = $a === false; var_dump($b);"
返回布尔(真)
在您的例子只是用不操作!因为你不需要检查is_dir结果的类型。