首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >$a与$a === false的区别

$a与$a === false的区别
EN

Stack Overflow用户
提问于 2012-11-18 11:39:27
回答 4查看 881关注 0票数 0

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

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

代码语言:javascript
代码运行次数:0
运行
复制
if (!is_dir($path)) {...}

代码语言:javascript
代码运行次数:0
运行
复制
if (is_dir($path) === false) {...}
EN

回答 4

Stack Overflow用户

发布于 2012-11-18 11:44:21

代码语言:javascript
代码运行次数:0
运行
复制
(!is_dir($path)){...}

如果is_dir($path)是,则为等于false。

代码语言:javascript
代码运行次数:0
运行
复制
(is_dir($path) === false){...}

如果is_dir($path)是IDENTIFCAL to false。这是更多的显式,因为is_dir($path)的结果必须是布尔虚值。其他什么也做不了。

运行此示例:

代码语言:javascript
代码运行次数:0
运行
复制
<?php

$var = 0;

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

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

?>

阅读比较操作符这里

票数 2
EN

Stack Overflow用户

发布于 2012-11-18 11:43:04

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

票数 1
EN

Stack Overflow用户

发布于 2012-11-18 11:44:06

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13439757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档