0

この投稿のタイトルが示すように、単語のすべての文字が別の単語に含まれているかどうかを確認できます。これまでのところ、これらは私が思いついたコード行です:

<?php   
        $DBword = $_POST['DBword'];
        $inputWords = $_POST['inputWords'];

        $inputCount = str_word_count($inputWords,1);



        echo "<b>THE WORD:</b>"."<br/>".$DBword."<br/><br/>";
        echo "<b>WORDS ENTERED:</b><br/>";

            foreach($inputCount as $outputWords)
            {
                echo $outputWords."<br/>";
            }

            foreach($inputCount as $countWords)
            {
                for($i=0; $i<strlen($countWords); $i++)
                {$count = strpos( "$DBword", $countWords[$i]);}

                if($count === false)
                {
                    $score++;
                }


            }

            echo "<b><br/>TOTAL SCORE: </b>";
            echo $score;


        ?>

foreachをと一緒に持つことのポイントは、$outputWords入力された文字を出力することです。もう1 つのforeachについては$countWords、入力された単語のすべての文字が に含まれているかどうかを実際に確認するために使用してい$DBwordます。ループを使用してforすべての文字をチェックしています。

これまでのところ、必要な出力が得られず、アイデアが不足しています。アイデアはありますか?

4

2 に答える 2

1
function contains_letters($word1, $word2) {
  for ($i = 0; $i < strlen($word1); $i++)
    if (strpos($word2, $word1{$i}) === false)
      return false;
  return true;
}

//example usage
if (contains_letters($_POST['inputWords'], $_POST['DBword']))
  echo "All the letters were found.";

このチェックで大文字と小文字を区別しない (つまり、'A' は 'a' の使用としてカウントされる) 必要がある場合は、 に変更strposstriposます。

于 2012-08-21T02:52:08.660 に答える
0

の各文字のループで上書き$countしているため、の最後の文字の位置のみが含まれます。また、手紙見つからなかったのになぜスコアを上げるのかわかりません。for$countWords$count$countWord

いずれにせよ、あなたはあなたの人生を必要以上に難しくしています。
PHPには、文字列内の文字をカウントする関数があります

return count_chars($dbWord, 3) === count_chars($inputWord, 3);

両方の文字列で同じ文字が見つかった場合はtrueを返します。

まったく同じ文字を持つすべての単語を見つける例:

$dbWord = count_chars('foobar', 3);
$inputWords = 'barf boo oof raboof boarfo xyz';
print_r(
    array_filter(
        str_word_count($inputWords, 1),
        function($inputWord) use ($dbWord) {
            return count_chars($inputWord, 3) === $dbWord;
        }
    )
);

「raboof」と「boarfo」のみを出力します。

于 2012-08-21T04:03:07.943 に答える