2012-11-18 39 views

回答

1

$!如果$ a设置为0,一个为真,或者如果$ a未设置。三重等号严格检查错误,而不仅仅是空值。

0

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

在代码中,这两个示例是“正确的”,尽管第一示例中,使用操作者!,是最简洁的,并应是优选的。

1
(!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

0

我觉得通过举一些例子会更容易理解(你需要在命令提示符/终端中执行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结果的类型。