2017-11-26 1 views
-1

Ich habe zwei Arrays von Zufallszahlen Ich muss innerhalb des zweiten Arrays nach Nummer aus dem ersten Array suchen und markieren sie als Übereinstimmungen durch Ändern der Farben von ihnen mit CSS, wenn sie übereinstimmen. Stellen Sie es sich wie einen Lottozahlprüfer vor.Suche in 2 Arrays Ausgabe entspricht in verschiedenen Farben

Ich habe es in einer langgezogenen Weise getan, aber ich frage mich, ob es eine Möglichkeit gibt, die Codierung zu verkürzen.

$white_balls = range(1, 70); 
    shuffle($white_balls); 
    $white_balls = array_slice($white_balls, 0, 5); 

    $five_ball = range(1, 70); 
    shuffle($five_ball); 
    $five_ball = array_slice($five_ball, 0, 5); 

    if(in_array($five_ball[0], $white_balls)) { 
     echo '<span style="color:red;">'.$five_ball[0].'</span>, '; 
    }else { echo $five_ball[0].", "; 
     } 
    if(in_array($five_ball[1], $white_balls)) { 
     echo '<span style="color:red;">'.$five_ball[1].'</span>, '; 
    }else { echo $five_ball[1].", "; 
     } 
    if(in_array($five_ball[2], $white_balls)) { 
     echo '<span style="color:red;">'.$five_ball[2].'</span>, '; 
    }else { echo $five_ball[2].", "; 
      } 
    if(in_array($five_ball[3], $white_balls)) { 
     echo '<span style="color:red;">'.$five_ball[3].'</span>, '; 
    }else { echo $five_ball[3].", "; 
     } 
    if(in_array($five_ball[4], $white_balls)) { 
     echo '<span style="color:red;">'.$five_ball[4].'</span>, '; 
    }else { echo $five_ball[4]." - "; 
     } 
+1

Eine Möglichkeit, Ihren Code zu verkürzen ist auf [Karte] Sie über (https://eval.in/907896) Ihre Auswahl statt if/else-Anweisungen wiederholt - oder Sie könnten 'foreach' verwenden –

+0

Sie sollten dies bei [Code Review] (https://codereview.stackexchange.com) stattdessen –

+0

@DarragEnright Während Ihr Code zum größten Teil arbeitet, markiert es einige Zahlen, die nicht in der Liste der "Gewinnzahlen". Leider verstehe ich Ihren Code nicht gut genug, um herauszufinden, warum. Ich denke, es ist Forschungszeit .... Ich werde es bekommen! –

Antwort

1
<?php 
function draw_balls($draw_count, $total_balls) { 
    $balls = range(1, $total_balls); 
    shuffle($balls); 

    return array_slice($balls, 0, $draw_count); 
} 

$one = draw_balls(5, 10); 
$two = draw_balls(5, 10); 

foreach($two as $num) 
    $out[] = in_array($num, $one) 
     ? '<span style="color:red;">' . $num . '</span>' 
     : $num; 

print implode(', ', $out); 

Weitere:

$winning_balls = array_intersect($two, $one); 

printf('Summary: %d out of %d balls are winners.', 
    count($winning_balls), 
    count($two) 
); 
Verwandte Themen