为什么我的If语句接受PHP中不正确的String条件?

时间:2014-10-02 12:44:04

标签: php string conditional-statements

我很困惑,因为PHP接受以下条件。

<?php
   $b = true;
   if($b == 'anything') 
      echo 'ok';
   else
      echo 'no';
?>

好吧,PHP显示ok。我还是不明白怎么可能。

也许,你可以为我澄清一下。

3 个答案:

答案 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)。

当比较(为了相等)boolstring时,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