duanan1228 2010-04-06 23:56
浏览 26
已采纳

PHP - 检查整个数组中是否存在字符串?

Basic array question:

$string = "The quick brown cat";

$check1 = "apple";
$check2 = "ball";
$check3 = "cat";

if ( (stripos($string, $check1) === false) ||
     (stripos($string, $check2) === false) ||
     (stripos($string, $check3) === false)
   ) {
   echo "Fail";
}

How do I condense the above using an array ($check[])?

Thanks!

  • 写回答

2条回答 默认 最新

  • dounei9043 2010-04-07 00:08
    关注

    You should still use strpos()

    $checks = array('apple', 'ball', 'cat');
    foreach($checks as $c){
      if(strpos($string, $c) === false){
        echo "Fail";
        break;
      }
    }
    

    benchmarks: strpos() wins

    <?php
    
    function benchmark($callback){
      echo sprintf('%-30s: ', $callback);
      $t = microtime(true);
      foreach(range(1, 10000) as $n){
        call_user_func($callback);
      }
      echo (microtime(true)-$t)."
    ";
    }
    
    function smotchkkiss_strpos(){
      $string = "The quick brown cat";
      $checks = array('apple', 'ball', 'cat');
      foreach($checks as $c){
        if(strpos($string, $c) === false){
          break;
        }
      }
    }
    
    function konforce_preg_match(){
      $string = "The quick brown cat";
      preg_match('/apple|ball|cat/i', $string);
    }
    
    function konforce_preg_match_implode(){
      $string = "The quick brown cat";
      $checks = array('apple', 'ball', 'cat');
      preg_match('/'.implode('|', $checks).'/i', $string);
    }
    
    
    benchmark('smotchkkiss_strpos');
    benchmark('konforce_preg_match');
    benchmark('konforce_preg_match_implode');
    
    # output
    # smotchkkiss_strpos            : 0.020166158676147
    # konforce_preg_match           : 0.032760858535767
    # konforce_preg_match_implode   : 0.045573949813843
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装