我试图匹配来自两个单独数组的三个或更多数字,但我到目前为止所有的代码都匹配前三个数字,当我需要它来比较所有六个数字并看看是否有三个共同点?我试过比较所有六个数字,但它不起作用。任何帮助表示赞赏。杰西卡
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;
}
答案 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()和循环。 但我在答案的顶部提供的解决方案确实更好。