在PHP中用strpos()评估布尔值

时间:2012-08-13 13:55:05

标签: php if-statement boolean strpos

这是我的代码,

  $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))) {

5 个答案:

答案 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)){

}

此外,不要使用||&&来检查TRUEFALSE,而是针对布尔值使用ORAND

答案 2 :(得分:0)

你的一些括号(( ))不是必需的,但它应该像这样工作。

if (!($em=== false || $em2=== false || $em3 === false)) {
       // do something
}

答案 3 :(得分:0)

两种情况都给出了相同的结果。你没有正确提到你的意图是什么。你在这里收到任何错误吗?

您可以在http://www.phpsyntax.blogspot.in

找到更多信息

答案 4 :(得分:0)

如果你在$ str中的文本中搜索某些东西,某些东西,那么就可以了。

但是如果你想在$ str中找到一个来自$ str的字符串,那么这就是问题所在。

你应该看看这个php.net/manual/en/function.strpos.php

问候