2016-05-24 165 views
1

我有一個函數與兩個數組。PHP匹配兩個數組,並給一個顏色匹配

一個名爲$user的數組和一個名爲winner 的數組在數組中都有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

您可以使用in_arrayarray_search

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

你可以分享'$贏家'和'$ user'數組嗎?本例中的 –

+0

:(用戶|贏家) 10,11,15,17,18,21,24,26,41,50 | 2,10,15,17,19,21,22,28,35,50 – maria