这是我的代码,
$em= strpos($str, 'something');
$em2= strpos($str, 'something2');
$em3= strpos($str, 'something3');
////////triggering only if either of them exist
if (($em!== false)||($em2!== false)||($em3!== false)) {
some action
}
我的编码是否正确?或者我错过了什么? 请建议。
应该是吗?
if (!(($em== false)||($em2== false)||($em3 == false))) {
答案 0 :(得分:2)
要检查strpos()
是否未找到子字符串的任何出现,您需要使用===
(比较值和类型),因为strpos()
也可以返回0
,与false
相比,评估为==
。
编辑:作者编辑了他的问题。这个答案涵盖了原始问题。
答案 1 :(得分:1)
如果要检查布尔值,则应始终使用===
或!==
。
主要原因是PHP,$Test == 1
或$Test == TRUE
或($Test)
如果$ Test的值不为空,则相同。
关于你的parantheses。如果要应用多于1个逻辑,则使用它们,如果不是,则可选。
if($Test === TRUE OR $Foo === TRUE){
}
和
if($Test === TRUE OR ($Foo === TRUE AND $Bar === TRUE)){
}
此外,不要使用||
或&&
来检查TRUE
或FALSE
,而是针对布尔值使用OR
或AND
。
答案 2 :(得分:0)
你的一些括号(( )
)不是必需的,但它应该像这样工作。
if (!($em=== false || $em2=== false || $em3 === false)) {
// do something
}
答案 3 :(得分:0)
两种情况都给出了相同的结果。你没有正确提到你的意图是什么。你在这里收到任何错误吗?
找到更多信息答案 4 :(得分:0)
如果你在$ str中的文本中搜索某些东西,某些东西,那么就可以了。
但是如果你想在$ str中找到一个来自$ str的字符串,那么这就是问题所在。
你应该看看这个php.net/manual/en/function.strpos.php
问候