【问题标题】:Evaluating booleans from strpos() in PHP [closed]在 PHP 中评估来自 strpos() 的布尔值 [关闭]
【发布时间】:2012-08-13 13:55:04
【问题描述】:

这是我的代码,

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

【问题讨论】:

  • 这取决于你想测试什么。
  • 其中一个还是至少一个?
  • 它们中的任何一个,但它的外观
  • PHP if 语句 ||? - 这是没有意义的问题(标题)

标签: php if-statement boolean strpos


【解决方案1】:

要检查strpos() 是否没有找到任何出现的子字符串,您需要使用===(比较值类型)因为strpos() 也可能返回0== 相比,其计算结果为false

编辑:作者编辑了他的问题。此答案涵盖了原始问题。

【讨论】:

    【解决方案2】:

    如果要检查布尔值,则应始终使用 ===!==

    主要原因是在 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 来检查布尔值。

    【讨论】:

    • 由于 Abul 使用 $em= strpos($str, 'something');,您可能还想向他解释为什么他应该然后转换 $em 以确保它是布尔值...
    • 因为稍后我会将这些 $em 位置用于我的函数。
    • @AbulHasnat Timothy 有点正确。该函数不仅返回FALSE,还返回字符串中的实际位置(INTEGER)。如果将函数转换为 BOOL,则它将是 FALSETRUE。在这种情况下,TRUE 将是 $em >= 1
    【解决方案3】:

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

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

    【讨论】:

    • 确保使用===0 == false为真。
    【解决方案4】:

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

    您可以在http://www.phpsyntax.blogspot.in找到更多信息

    【讨论】:

      【解决方案5】:

      如果您在 $str 中的文本中搜索某事、某事 2、某事 3,就可以了。

      但如果您想从 $str 中的某物、某物 2 或某物 3 中找到一个字符串,那么问题就在这里。

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

      问候

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-13
        • 2011-08-28
        • 2012-06-04
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 2012-05-06
        相关资源
        最近更新 更多