逻辑运算符php是真还是假

时间:2012-01-07 10:23:56

标签: php logical-operators

作为一名php neewbie,我尝试阅读很多其他人的代码以便学习。 今天我遇到了这样一条线:

if ( stripos($post_to_check->post_content, '[' . $shortcode) !== false )

我想知道它们之间有什么区别 !==false==true 如果有人可以向我解释,我将不胜感激。 ..如果没有真正的区别 - 使用引用的那个是什么原因?

4 个答案:

答案 0 :(得分:6)

PHP是一种松散类型的语言。 ==匹配这两个值,===匹配值以及值的数据类型。

if (8 == '8') // returns true

以上条件只匹配值而非数据类型,因此if评估为TRUE

if (8 === '8') // returns false

这个检查值的值和数据类型,因此if评估为FALSE

您要使用===来检查值和数据类型,并在需要仅比较值而不是数据类型时使用==

在你的情况下,

stripos返回字符串中子字符串的位置,如果找不到字符串,则返回FALSE

if ( stripos($post_to_check->post_content, '[' . $shortcode) !== false )

上面的代码检查字符串中的子字符串,并仅在找到子字符串时才评估为TRUE。 如果将其更改为

if ( stripos($post_to_check->post_content, '[' . $shortcode) != false )

当在0位置找到子字符串时,即使主字符串中存在子字符串,if也会评估为FALSE。 然后条件会变成这样

if ( 0 != false )

这将评估为FALSE,因为0被视为FALSE

所以你必须使用!==

if ( 0 !== false )

这将比较两个值的值和数据类型 值0是整数类型,falseboolean类型,因此此处的数据类型不匹配,条件将为TRUE

PHP手册页说明了这些comparison operator你应该检查一次。

答案 1 :(得分:3)

!==false==true之间的差异是PHP中相同/不相同和相等/不相等的比较之间的差异。

请参阅PHP手册中的Comparison Operators 相同 Equal 之间的区别是什么。

答案 2 :(得分:1)

!==是一种比较,不仅会比较,还会比较两个变量的类型

此处使用它是因为stripos可以在未找到匹配时返回false,但在字符串的第一个字符中找到匹配时也会返回0

==无法区分这两种情况(它们都是“虚假”),因此在使用===时必须使用striposmanual

中有警告
  

此函数可能返回布尔值FALSE,但也可能返回一个非布尔值,其值为FALSE,例如0或“”。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。

答案 3 :(得分:-1)

注意:== true和=== true不同。

我认为!== false类似于=== true,所以只解释== true和=== true。对于第一个==,它的值相等,因此1 == true,0 == false。对于===,它在PHP中是“相同的”,即值相等,也在类型中。

因此,如果结果位于第0位,则结果应该为真;但是,如果使用== true,它将不会作为0!= true。

例如,     stripos('a sheep','a')  如果你使用== true,结果是错误的,因为它在第一位。