in_array方法只运行一次?

时间:2016-05-05 18:10:12

标签: php

我试图创建一个功能,检查输入的单词是否已经存在于我的数据库中。

我使用以下代码:

public function contains($string, $pieces)
{
    $this->getWords();
    $arr = $this->_data; // Get everything from DB

    $words = array();
    $foundWords = array();
    foreach($arr as $key)
    {
        $words[] = $key->word; // Put words in array
    }

    foreach($words as $item)
    {
        if (in_array($item, $words))
        { // Check if entered words are in the DB array

            $foundWords[] = $item; // Put already existing words in array

            print_r($foundWords);

            echo "Match found: ";
            echo $item . '<br>'; // Echo found words

            return true;
        }
        echo "Not found!";
        return false;
    }
}

问题是,它只检查输入的单词数组中的第一个单词。 有谁知道为什么会发生这种情况?

实施例

用户输入'This is a test'。 数据库包含以下单词:This, is, a, test

代码的输出现在应为Match found: This, is, a, test$foundWords数组应包含这些字词。

相反,它只找到第一个单词而$foundWords数组只包含第一个单词。所以,Match found: This

2 个答案:

答案 0 :(得分:1)

从函数创建返回状态的变量。在这里,我使用actual[i].stop > pending[j].stop变量来检查单词的状态。默认情况下,我将变量设置为false,如果找到了单词,则将变量设置为$flagtrue,并返回break

flag

答案 1 :(得分:0)

删除“返回”并检查您是否找到任何单词:

 foreach($words as $item) {
        if (in_array($item, $words)) { // Check if entered words are in the DB array

            $foundWords[] = $item; // Put already existing words in array
        }
    }
  if(count($foundWords) == 0) {

        echo "Not found!";
  }
  else
  {  
            echo "Words: ";
            print_r($foundWords);
  }