【发布时间】:2018-09-27 18:30:00
【问题描述】:
考虑以下示例:
$a='This is a test';
如果我现在这样做:
if(strpos($a,'is a') !== false) {
echo 'True';
}
得到:
True
但是,如果我使用
if(strpos($a,'is a') === true) {
echo 'True';
}
我什么也得不到。为什么在这种情况下!==false 不是===true
我检查了strpos() 上的 PHP 文档,但没有找到任何解释。
【问题讨论】:
-
如果你把
=== true拿出来,你会得到你的“真实”声明,因为strpos会返回一个1 而不是一个零——即if(strpos($a,'is a'){ -
===正在寻找设置为true的bool-- 而 1 在技术上true-- 它不是字面意思true--- 而===正在寻找字面比较 -
Pete,@Zak 的信息对你有意义吗?我认为您的问题表明您可能正在为真与真、假与假而苦苦挣扎。
-
是的,我想我不知道正整数(如果它找到字符串,则 strpos 传递)在 === 意义上不等于 true,而仅在 == 意义上.最终,Barmar 在下面关于类型转换的答案中对我的评论的回复清除了它。这确实应该在 strpos 的 php 手册中。
标签: php boolean strpos stripos