Mailinglisten-Archive |
Kristofer Schwab schrieb: >> Möchte ein Array mit Zufallszahlen füllen, wobei jede Zahl nur einmal >> auftreten darf. >> Mein Skript liefert mir leider nur eine Endlosschleife. >> >> $testarray = array(); >> $zaehler = 0; >> >> while ($zaehler < 10) >> { $zufall = rand(0,20); >> >> for ($n=0;$n<$zaehler+1;$n++) >> { >> if ($testarray[$n]==$zufall) >> { >> $pruef = 'gibts'; >> } >> } >> >> if ($pruef != 'gibts') >> { >> $testarray[$zaehler]=$zufall; >> $zaehler++; >> } >> } >> >> Woran liegts ?? >> >> >> > Das geht auch einfacher: > > while ($zaehler < 10) > { $zufall = rand(0,20); > > if(in_array($zufall, $testarray)) { > continue; > } > > $testarray[$zaehler]=$zufall; > $zaehler++; > } ;-) $array = array(); while ( count( $array ) <= 10 ) { $array[rand( 0, 20 )] = 0; } $array = array_keys( $array ); p.s. dein Fehler liegt darin das du $pruef nicht wieder zurücksetzt, und somit bei jedem Durchlauf $pruef auf "gibts" gesetzt ist, sobald einmal eine Zahl schon vorhanden war. p.p.s. für sowas nimmt man 'flags' $testarray = array(); $zaehler = 0; while ($zaehler < 10) { //$pruef = 'gibts nicht'; // dein Fehler !!! $flag_gibts_schon = false; $zufall = rand(0,20); for ( $n = 0; $n < $zaehler + 1; $n++ ) { if ( $testarray[$n] == $zufall ) { //$pruef = 'gibts'; $flag_gibts_schon = true; } } //if ( $pruef != 'gibts' ) if ( $flag_gibts_schon == false ) { $testarray[$zaehler]=$zufall; $zaehler++; } } -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive