逻辑运算符 php 真或假


Logical operators php true or false

作为一个php neewbie,我尝试阅读很多其他人的代码来学习。今天我遇到了这样一句话:

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

我想知道两者之间有什么区别 !==false==true 如果有人能向我解释这一点,将不胜感激。..如果没有真正的区别 - 使用引用的一个而不是另一个的原因是什么?

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 手册页声明了这些比较运算符,您应该检查一次。

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

请参阅 PHP 手册中的比较运算符,了解相同相等之间的区别。

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

在这里使用它是因为stripos可以在未找到命中时返回false,但在字符串的第一个字符中找到命中时也可以返回0

==无法区分这两种情况(它们都是"假的"(,因此在使用stripos时必须使用===。手册中有一个警告:

此函数可能返回布尔值 FALSE,但也可能返回计算结果为 FALSE 的非布尔值,例如 0 或 "。请阅读布尔值部分以获取更多信息。使用 === 运算符测试此函数的返回值。

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

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

因此,如果结果位于第 0 位,则结果应为 true;但是,如果使用 ==true,则它不会像 0!= true 那样工作。

例如 条带("一只羊","一只"( 如果使用 ==true,则结果是错误的,因为它排在第一位。