Php STRPO未评估到我认为应该的程度
我在正确评估STRPO时遇到问题Php STRPO未评估到我认为应该的程度,php,strpos,Php,Strpos,我在正确评估STRPO时遇到问题 $status = "L"; $x = strpos($status,'L'); echo var_export($x,true); echo "<br/>"; if (strpos($status,'L') === true) {echo "L is there!.";} else {echo "No L Found!";} 根据我对strpo和“==”与“==”的理解,这应该是找到L 我不明白什么?不返回true,如果找不到字符串则返回fals
$status = "L";
$x = strpos($status,'L');
echo var_export($x,true);
echo "<br/>";
if (strpos($status,'L') === true) {echo "L is there!.";}
else {echo "No L Found!";}
根据我对strpo和“==”与“==”的理解,这应该是找到L
我不明白什么?不返回true,如果找不到字符串则返回false,如果找到索引则返回index
从官方文件:
返回针相对于干草堆字符串开头的位置(与偏移无关)。还要注意,字符串位置从0开始,而不是从1开始
如果未找到指针,则返回FALSE
不返回true,如果找不到字符串,则返回false;如果找到索引,则返回index
从官方文件:
返回针相对于干草堆字符串开头的位置(与偏移无关)。还要注意,字符串位置从0开始,而不是从1开始
如果未找到指针,则返回FALSE
您确实需要进行严格的比较。你只需要做相反的事情
if (strpos($status, 'L') !== false) {
echo "L is there!.";
} else {
echo "No L Found!";
}
当使用==true
进行计算时,strpos($status,'L')
必须返回一个布尔值true
,而不仅仅是一个计算结果为true的值,正如您在文档中看到的,strpos
将永远不会返回该值
如果改用==true
,它有时会起作用,只有当L不是字符串中的第一个字符时才会起作用。当它是第一个字符时,strpos($status,'L')
将返回0
,该值不会计算为true
,但字符串中的任何其他位置都将返回一个正整数,该值为
由于
false
是未找到搜索字符串时函数返回的值,因此唯一可靠的方法是对false
进行严格比较,您确实需要执行严格比较。你只需要做相反的事情
if (strpos($status, 'L') !== false) {
echo "L is there!.";
} else {
echo "No L Found!";
}
当使用==true
进行计算时,strpos($status,'L')
必须返回一个布尔值true
,而不仅仅是一个计算结果为true的值,正如您在文档中看到的,strpos
将永远不会返回该值
如果改用==true
,它有时会起作用,只有当L不是字符串中的第一个字符时才会起作用。当它是第一个字符时,strpos($status,'L')
将返回0
,该值不会计算为true
,但字符串中的任何其他位置都将返回一个正整数,该值为
由于
false
是未找到搜索字符串时函数返回的值,因此唯一可靠的方法是与false
进行严格比较,这是否意味着我需要使用!==false而不是===true?我一直认为,如果它实际上没有设置为布尔值“false”,那么与true相比的任何东西都会返回true。不是这样吗?回答正确,虽然很简短。您可能需要添加文档的链接或引用。或者甚至解释为什么在这种情况下也是true!=1
@Jeff当然,请稍候,很抱歉,这是否意味着我需要使用!==false而不是===true?我一直认为,如果它实际上没有设置为布尔值“false”,那么与true相比的任何东西都会返回true。不是这样吗?回答正确,虽然很简短。您可能需要添加文档的链接或引用。或者甚至解释为什么在这种情况下也是true!=1
@Jeff当然可以等一下,很抱歉