Doppelte Zahlen finden + ausschließen

yoursmilie

Well-known member
25 April 2006
848
52
Ich probiere mich gerade mal wieder an PHP und stehe in meinen Augen vor einem Logikproblem.

Ich will 5 Zufallszahlen generieren, die in einer Array abgelegt werden. Soweit auch kein Problem:

PHP:
$b=array();
for($i=0;$i<6;$i++) {
array_push($b,rand(1,20));
}

Wie kann ich jetzt aber ausschließen, dass die Zahlen doppelt sind, ohne jedes einzeln mit einer if Abfrage zu vergleichen. Ich hatte mir gedacht, dass man es mit einer zweiten for-Schleife innerhalb der ersten macht und diese dann vergleicht. Wollte mir aber nicht so ganz gelingen:

PHP:
$b=array();
for($i=0;$i<6;$i++) {

array_push($b,rand(1,20));

for($j=0;$j<$i;$j++) {

if($i <> $j) {

while($b[i] = $b[j]) {

$b[i] = rand(1,20);
} } } }

Kann mir jemand sagen, wo mein Fehler liegt, wenn meine Lösung vom Gedanken her richtig ist? Bzw. kann mir jemand sagen, wie ich das Problem mit doppelten Zahlen anders lösen könnte?
 
Du könntest array_unique verwenden. Oder du überprüfst mit in_array VOR dem hinzufügen der Zufallszahl, ob sie schon vorhanden ist.
 
Guck dir mal array_unique() an.

edit:
zu langsam
 
PHP:
$b = Array();
$a = 0;
$i = 0;
while($i <= 4){
    $a = mt_rand(1,20);
    if(!in_array($a, $b)){
        array_push($b,$a);
        $i++;
    }
}
Erklärung:
- in_array() überprüft, ob ein Wert in einem Array schon vorhanden ist.

EDIT: Mist, zu lange zum tippen bzw. nebenbei Kaffee trinken gebraucht. => ich muss schneller tippen :)