我很困惑,因为PHP接受以下条件。
<?php
$b = true;
if($b == 'anything')
echo 'ok';
else
echo 'no';
?>
PHP显示ok
。我仍然不明白这怎么可能。
也许,你可以帮我澄清一下。
这应该适用于
$b = true;
if($b === 'hello')
echo 'ok';
else
echo 'no';
当使用==
时,php只检查值是否相等,而不比较值的类型,当第一个值是bool时,php将两边转换为bool,转换任何字符串,但空字符串''
和字符串'0'
将返回true
,这就是为什么必须使用===
点击此链接了解php 中的比较
Php不是一种严格类型的语言,因此IF语句后半部分的值被认为是Truthy值。如果您也要完成类型,请使用"==="比较。看看这一页上的真表。http://php.net/manual/en/types.comparisons.php
根据PHP关于比较运算符的手册(http://php.net/manual/en/language.operators.comparison.php)==
检查"相等性",而===
检查同一性(实际上意味着它具有相同的TYPE和相同的VALUE)。
当比较(为了相等)bool
和string
时,string
被广播到bool
。根据文件:
转换为布尔值时,以下值被视为FALSE:*布尔值FALSE本身*整数0(零)*浮点0.0(零)*空字符串和字符串"0"*具有零元素的数组
所以你的字符串'anything'
变成了true
。