2016-04-13 17 views
1

この関数は6つのマッチを返しますが、2つのマッチが必要です。私はここで何が間違っているのか分かりません。strpos()の使用に問題がある

public function displayPrize() { 
     $testString = "The cow jumped over the moon"; 
     $userString = "The cow"; 

     $magicArray = (explode(" ", $testString)); 

     foreach ($magicArray as $value) { 
      if (strpos(" ", $userString, $value) !== false) { 
       $count++; 
      } 
     } 

     echo $count . ' matches'; 
    } 
+0

$値は文字列です... strpos – DragonYen

+0

...のparam 3は数であることを期待配列検索を使用する – devpro

+0

あなたがしようとしていることははっきりしません。なぜそれが2試合になるはずだと思いますか?あなたは 'strpos()'呼び出しに何を期待していますか? – Barmar

答えて

0
if (strpos(" ", $userString, $value) !== false) 

array_intersect()を使用して

if (strpos($userString, $value) !== false) 
+0

$ userStringが "Theatre coward"の場合は、シアターの臆病者が元の文字列にないにもかかわらず、まだ2つの一致が得られることに注意してください。 – DragonYen

0

代替的な方法になっている必要があります。

$testString = 'The cow jumped over the moon'; 
$userString = 'The cow'; 

$testStringArray = explode(' ', $testString); 
$userStringArray = explode(' ', $userString); 

$result = count(array_intersect($testStringArray, $userStringArray)); // 2 
関連する問題