我有一个带有两个数组的函数。
一个名为$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);
}
答案 0 :(得分:1)
您可以将in_array
与array_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;