这个foreach有什么问题?

时间:2017-04-02 11:16:13

标签: php arrays foreach

我正在尝试创建一个函数,它将使用foreach来确定提供给它的字符串是否包含数组中的任何单词。我已经尝试通过将echo "iteration...<br>";放在foreach之后进行调试,这样我就可以看到它循环了多少次,并且它似乎从未开始循环,所以我假设有一个问题我已经设置了foreach或者我的阵列。有任何想法吗?感谢。

$badwords = array("example", "word");

function containsBad($st) {
    $isbad = false;
    foreach($badwords as $word) {
        echo "iteration...<br>";
        if (strpos($st, $word)) {
            $isbad = true;
        }
    }
    return $isbad ? 'true' : 'false';
}

echo containsBad("example");

1 个答案:

答案 0 :(得分:0)

在使用之前,您必须将$badwords变量定义为函数内的全局变量:

global $badwords;

但您的计划还有其他改进:

  1. 您的程序无法确定字符串开头是否有错字。
  2. 使用布尔变量$isbad
  3. $ badwords = array(&#34;示例&#34;,&#34; word&#34;);

    function containsBad($st) 
      {
      global $badwords;
      $isbad = false;
      foreach($badwords as $word) 
        {
        echo "iteration...<br>";
        if (strpos($st, $word)!==false) 
          $isbad = true;
        }
        return $isbad;
      }