PHP数组,试图匹配三个数字

时间:2013-10-06 16:39:39

标签: php arrays

我试图匹配来自两个单独数组的三个或更多数字,但我到目前为止所有的代码都匹配前三个数字,当我需要它来比较所有六个数字并看看是否有三个共同点?我试过比较所有六个数字,但它不起作用。任何帮助表示赞赏。杰西卡

foreach($lottoTickets as $y => $yvalue)
{   
if($i == 0)
{
    echo " ";
}
else{
    if((($winner[0] == $lottoTickets[$y][0]) || ($winner[0] ==   $lottoTickets[$y][1]) || ($winner[0] == $lottoTickets[$y][2]) || ($winner[0] == $lottoTickets[$y][3]) || ($winner[0] == $lottoTickets[$y][4]) || ($winner[0] == $lottoTickets[$y][5])) && 
    (($winner[1] == $lottoTickets[$y][0]) || ($winner[1] == $lottoTickets[$y][1]) || ($winner[1] == $lottoTickets[$y][2]) || ($winner[1] == $lottoTickets[$y][3]) ||($winner[1] == $lottoTickets[$y][4]) || ($winner[1] == $lottoTickets[$y][5])) &&
    (($winner[2] == $lottoTickets[$y][0]) || ($winner[2] == $lottoTickets[$y][1]) || ($winner[2] == $lottoTickets[$y][2]) || ($winner[0] == $lottoTickets[$y][3]) ||($winner[2] == $lottoTickets[$y][4]) || ($winner[2] == $lottoTickets[$y][5])))

    echo "<b>Three winning numbers ID = </b>" .$y;
}

1 个答案:

答案 0 :(得分:1)

您可以将array_diff()用于此目的。 它返回一个包含两个给定数组内所有差异的数组。

如果您确定用户的乐透彩票和正确的数字之间的差异,则会得到错误的数字。

从6 *中减去该整数,可以得到正确选择的数字量。

foreach ($lottoTickets as $y => $yvalue) {
  if($i == 0)
  {
    echo " ";
  }

  else {
    $diff = array_diff($lottoTickets[$y], $winner);
    $correctNumbers = 6 - count($diff);

    if ($correctNumbers >= 3) {
      echo "<b>(At least) three winning numbers ID = </b>" . $y;
    }
  }
}

这里还有一个最小的工作样本:http://codepad.org/OWrdv5Xe

*)6这里不是幻数(→乐透)


至于为什么你的代码不起作用(在所有情况下):这是因为你只将前三个正确的数字与所选的数字进行比较。你必须比较所有数字。这涉及到一个计数器变量,用于存储正确选择的数量。

如果您真的想坚持使用当前的解决方案,至少使用in_array()和循环。 我在答案的顶部提供的解决方案确实更好。