我试图创建一个功能,检查输入的单词是否已经存在于我的数据库中。
我使用以下代码:
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
。
答案 0 :(得分:1)
从函数创建返回状态的变量。在这里,我使用actual[i].stop > pending[j].stop
变量来检查单词的状态。默认情况下,我将变量设置为false,如果找到了单词,则将变量设置为$flag
和true
,并返回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);
}