|   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