我很困惑,因为PHP接受以下条件。
<?php
$b = true;
if($b == 'anything')
echo 'ok';
else
echo 'no';
?>
好吧,PHP显示ok
。我还是不明白怎么可能。
也许,你可以为我澄清一下。
答案 0 :(得分:5)
这应该对你有用
$b = true;
if($b === 'hello')
echo 'ok';
else
echo 'no';
当使用==
php只会检查值是否相等,而不比较值类型,当第一个值是bool时,php会将两边转换为bool,转换任何字符串但空字符串{{1并且字符串''
将返回'0'
,这就是您必须使用true
按照link来理解php中的比较
答案 1 :(得分:1)
Php不是严格类型的语言,因此IF语句后半部分的值被视为Truthy值。如果你想抱怨类型,请使用&#34; ===&#34;比较。看看这个页面上的truthy表。 http://php.net/manual/en/types.comparisons.php
答案 2 :(得分:1)
根据关于比较运算符的PHP手册(http://php.net/manual/en/language.operators.comparison.php)==
检查&#34;平等&#34;而===
检查身份(实际上意味着它具有相同的TYPE和相同的VALUE)。
当比较(为了相等)bool
和string
时,string
会被投放到bool
。根据{{3}}:
When converting to boolean, the following values are considered FALSE: * the boolean FALSE itself * the integer 0 (zero) * the float 0.0 (zero) * the empty string, and the string "0" * an array with zero elements
因此您的字符串'anything'
变为true
。