这两种支票有什么区别?哪种方法是正确的类型检查,称为函数或方法失败并返回false?
if (!is_dir($path)) {...}
或
if (is_dir($path) === false) {...}
发布于 2012-11-18 03:44:21
(!is_dir($path)){...}
如果is_dir($path)是,则为等于false。
(is_dir($path) === false){...}
如果is_dir($path)是IDENTIFCAL to false。这是更多的显式,因为is_dir($path)的结果必须是布尔虚值。其他什么也做不了。
运行此示例:
<?php
$var = 0;
if($var == false){
echo 'Var is EQUAL to FALSE.';
}
if($var === false){
echo 'Var is IDENTICAL to FALSE.';
}
?>
阅读比较操作符这里。
发布于 2012-11-18 03:43:04
如果$a设置为0,或者$a未设置,则$a为真。三重等号严格检查假,而不仅仅是空值.
发布于 2012-11-18 03:44:06
===
运算符是“相同值和相同类型”的比较。因此,只有当$foo === false
已经是等于false的bool
类型时,!$foo
才是真,而!$foo
将根据$foo
的类型执行不同的操作(例如,如果$foo
是一个对象或资源,那么它将检查它是否为空值。如果它是一个字符串,那么它会检查空字符串(我也认为是空字符串,但我不确定)。如果它是一个整数,那么它检查它是否为零。基本上,它的工作原理类似于C的!
操作符,在它们添加bool类型之前(布尔值实际上是int
值)。
在您的代码中,这两个示例都是“正确的”,尽管使用!
运算符的第一个示例是最简洁的,应该是首选的。
https://stackoverflow.com/questions/13439757
复制