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