条件比较字符串与布尔值返回不需要的结果,除非使用严格的比较


Condition comparing string against bool returning undesired result unless strict comparison is used

在 PHP 5.3 中,我偶然发现了这种情况:

$test=true;
return $test=='alternate';

它返回 true。我不明白为什么。

为什么它返回 true?

此外,还要说:

$test=true;
return $test==='alternate';

返回假。理所当然。我知道在大多数情况下最好使用严格的比较,但我想了解在第一种情况下会发生什么?

非空字符串被认为是真的。松散地比较真实与真实会产生真实。

有关详细信息,请参阅 http://www.php.net/manual/en/types.comparisons.php。并始终使用严格的比较。你很少需要松散的变量,但在每种情况下,你都会让人怀疑你是否打算对变量进行类型转换,或者它是否是一个错误。