2016-05-24 123 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