作为一个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
是整数类型,false
是boolean
类型,因此数据类型在这里不匹配,条件将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,则结果是错误的,因为它排在第一位。