2011-06-03 103 views
16

只是一个简单的问题 - 我确定它非常基础!PHP - 检查返回错误;

我有以下代码:

function checkThings($foo, $bar) { 
    ... 
    if ($valid) { 
     return $results; 
    } else { 
     return false; 
    } 
} 

在此的另一端,我目前在做

$check = checkThings($foo, $bar); 
if ($check === false) { 
    echo "Error"; 
} else { 
    echo $check; 
} 

正在写下面的一样吗?

$check = checkThings($foo, $bar); 
if (!$check) { 
    echo "Error"; 
} else { 
    echo $check; 
} 

如果两者都正确,哪种方法是首选方法?

谢谢:)

回答

4

他们是相似,但不完全相同。 !$check是一个松散的检查器,意味着0null也会评估为真。 ===是一个严格的检查器,这意味着它必须是false

为了更深入的解释:(!$检查)PHP Types Comparisons

7

===假支票类型,评估价值,将失败返回的值,如空“”(空字符串)和零(0 )

===是最正确的

-1

==做了值比较,其中===执行按位。

// will return true only when $value = false 
if($value === false) 

// will return true when $value = 0, $value = "", $value = null, etc 
if($value == false) 
if(!$value) 
+1

'==='比较两件东西的价值和类型。这不是“按位”。 – 2011-06-03 19:45:31

+0

同意@火箭 - 这是不正确 – 2011-06-03 20:03:36

+0

这是我第一次听说关于===运算符的“按位”。更多信息可能会有所帮助。 – JohnnyQ 2016-06-08 04:35:37

0

我宁愿你的第二种方法,但首先把积极检查(如果($检查))。

+0

由于与使用'!$ check'相同的原因,这会失败。他真的应该使用'$ check!== FALSE'。 – 2011-06-03 19:47:11