PHP匹配两个数组并给匹配颜色

时间:2016-05-24 08:24:26

标签: php arrays

我有一个带有两个数组的函数。

一个名为$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);
    }

3 个答案:

答案 0 :(得分: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++;
}

答案 1 :(得分:0)

你可以使用array_intersect。这将为您提供所有比赛。

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

print_r($new_arr);

答案 2 :(得分: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;