作为一个 php 新手,我尝试阅读很多其他人的代码来学习。 今天我遇到了这样一行:
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
类型,因此这里的数据类型不匹配,条件为真
PHP 手册页说明这些 comparison operator你应该检查一次。
关于php - 逻辑运算符 php true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8768958/