Estoy bastante seguro de que mi sintaxis está desactivada, ha pasado un tiempo desde que usé PHP. ¡Cualquier ayuda es apreciada! Una especie de coincidencia mixta de C en este momento. Esto es esencialmente un ciclo que compara ambas matrices antes de pasar a un segundo ciclo que arroja la regla que se requiere para ganar la 'lotería'
$pickedBalls = [1, 2, 3, 4, 5, 6]; $playerBalls = [ "Harry" => [6, 7, 8, 9, 10, 11], "Jack" => [4, 5, 6, 7, 8, 9], "Andrew" => [9, 10, 11, 12, 13, 14], "Paul" => [15, 16, 17, 18, 19, 20], "Andrew2" => [21, 22, 23, 24, 25, 26] ]; $results = []; foreach ($playerBalls as $key => $value) { for ($i = 0; $i < 6; $i++) { for ($j = 0; $j < 6; $j++) { if ($pickedBalls[$i] == $value[$j]) $results[$key]++; } } }No tengo la intención de votar a favor o en contra.
Te recomiendo que aprendas lo esencial de PHP (YouTube: tutoriales de PHP para principiantes)
Acerca de verificar los ganadores de la lotería: se puede hacer simplemente cruzando 2 matrices y verificando el tamaño de la intersección:
$drawnNumbers = [4, 8, 15, 16, 23, 42]; $ticketsPurchases = [ "Harry" => [3, 2, 31, 5, 12, 44], "Jack" => [8, 42, 13, 23, 1, 49], "Andrew" => [8, 17, 19, 22, 25, 31], "Paul" => [11, 16, 20, 29, 31, 38], "Andrew" => [17, 18, 20, 22, 31, 47] ]; $results = []; $winners = []; $winningCondition = 3; foreach ($ticketPurchases as $player => $numbers) { $winningNumbers = array_intersect($numbers, $drawnNumbers); // intersection of player's ticket numbers and drawn numbers $winningNumbersCount = sizeof($winningNumbers); // intersection size $won = $winningNumbersCount >= $winningCondition; // if intersection size GTE winning condition (3) $results[$player] = compact('player', 'winningNumbers', 'winningNumbersCount', 'won'); if($won) $winners[] = $player; } echo "\nRESULTS:\n"; print_r($results); echo "\nWINNERS:\n"; echo implode("\n", $winners);Esto podría ser lo que buscas
$pickedBalls = [4, 8, 15, 16, 23, 42]; $playerBalls = [ "Harry" => [3, 2, 31, 5, 12, 44], "Jack" => [8, 42, 13, 23, 1, 49], "Andrew" => [8, 17, 19, 22, 25, 31], "Paul" => [11, 16, 20, 29, 31, 38], "Andrew2" => [17, 18, 20, 22, 31, 47] ]; $results = []; foreach ($playerBalls as $person => $balls) { if ( !isset($results[$person]) ) { $results[$person] = 0; } foreach( $balls as $ball) { if (in_array($ball, $pickedBalls)) { $results[$person]++; } } } foreach ( $results as $name => $balls ) { if ( $balls >= 3) { echo $name . ' is a winner'; } }RESULTADOS
Jack is a winner