2016-05-24 16 views
1

私は2つの配列を持つ関数を持っています。PHPは2つの配列に一致し、色を一致させます

$userと呼ばれる1つの配列と、winner と呼ばれる1つの配列の両方が、配列内に10個の数字を持っています。

$userには、$winnerと一致する数字がいくつ見つかりますか? と一致するたびに、$userからの固有番号を緑色のスパンカラーで囲みます。

私はコードを書いていますが、それらは正しく当てはまりません。なぜなら、数字は同じ場所ではなく、配列のどこにあってもよいからです。

現在のコード:

function calculateMatches($user,$winner) { 
     sort($user); 
     sort($winner); 

     $x=0; 
     $match = 0; 

     foreach($winner as $number) { 



      if ($number == $user[$x]) { 
       $user[$x] = "<span style=\"color:green;\">".$user[$x]."</span>"; 
       $match++; 
      } 

      $x++;} 

     return array('match' => $match,'user' => $user, 'winner' => $winner); 
    } 
+1

使用 'in_array()' – Saty

答えて

1

あなたはarray_searchin_arrayを使用することができます。

if(in_array($number, $user) { 
    $x = array_search($number, $user, true); 
    $user[$x] = "<span style=\"color:green;\">".$user[$x]."</span>"; 
    $match++; 
} 
+0

が、それはどのようにこの場合と$ xが一致した値である知っているのですか? (これは10試合まで可能です) – maria

+0

コード@maria – Albzi

+0

電流出力を更新しました: 3,6,19,20,23,24,25,31,39,45 | 7,24,26,34,37,38,41,43,44,49 ここで、6とは一致します。 – maria

0

あなたはarray_intersectを使用できます。これはあなたにすべての試合を与えるでしょう。

$new_arr = array_intersect($user, $winner); 

print_r($new_arr); 
0

array_search()を使用してください。 Online Check

$user = array(10,11,15,17,18,21,24,26,41,50); 
$winner = array(2,10,15,17,19,21,22,28,35,50); 

$match = 0; 
foreach($winner as $number){ 
    $x = array_search($number, $user, true); 
    if($x !== false){ 
     $user[$x] = "<span style=\"color:green;\">".$user[$x]."</span>"; 
     $match++; 
    } 
} 
echo '<pre>'; 
print_r($user); 
echo $match; 
+0

http://prntscr.com/b7rksu 動作しませんか? – maria

+0

あなたは '$ winner'と' $ user'配列を共有できますか?この例の –

+0

:(ユーザー|勝者) 10,11,15,17,18,21,24,26,41,50 | 2,10,15,17,19,21,22,28,35,50 – maria

関連する問題