Avatar billede donslund Nybegynder
20. december 2003 - 14:54 Der er 3 kommentarer og
1 løsning

Checke om værdi findes i array

Jeg har denne kode som smider 7 tal ned i et array, men når jeg så vil have skrevet tallene fra 1 - 36 ud og den skal gøre de tal der findes i arra'et fed, så 'feder' den kun ét tal.

<?
$nummerarray = array(0);
for ($i=0; $i<7; $i++) {
    $tal = rand (1, 36);
   
    if (in_array($tal, $nummerarray)) {
      print "Nummer findes";
        $i--;
    } else {
        $nummerarray[$i] = $tal;
    }
}
print "<BR>";
for ($j=1; $j<=36; $j++) {
    for ($i=0; $i<=count($nummerarray); $i++) {
        if ($nummerarray[$i] == $j) {
            print " <b>".$j."</b> ";
            break;
        } else {
            print " ".$j." ";
            break;
        }
    }
}
?>
Avatar billede jakoba Nybegynder
20. december 2003 - 15:01 #1
I din nummer 2 forløkke har du en forløkke der skriver j 7 gange. det er dea ikke meningen.
Hvorfor ikke bare bruge  in_array  en gang til:
for ($j=1; $j<=36; $j++) {
        if (in_array($j,$nummerarray) {
            print " <b>".$j."</b> ";
            break;
        } else {
            print " ".$j." ";
            break;
        }
}

mvh JakobA
Avatar billede donslund Nybegynder
20. december 2003 - 15:03 #2
Ja, hvorfor ikke. Men den kører kun nummer 1. Det ser ikke ud til, at den kører de 36 gange.
Avatar billede donslund Nybegynder
20. december 2003 - 15:08 #3
Jeg fjernede bare break; så virkede det. Den stopper åbenbart også for-løkken.

Smider du et svar?
Avatar billede jakoba Nybegynder
20. december 2003 - 15:08 #4
Ups, og ikke nogen break;
for ($j=1; $j<=36; $j++) {
        if (in_array($j,$nummerarray) {
            print " <b>".$j."</b> ";
        } else {
            print " ".$j." ";
        }
}

Ja det er sådan den skal forklares:

for ($j=1; $j<=36; $j++) {
    for ($i=0; $i<=count($nummerarray); $i++) {  // første gang er $i == 0
        if ($nummerarray[$i] == $j) {
            print " <b>".$j."</b> ";
            break;      // hvis $nummerarray[$i] == $j  slutter vi løkken her
        } else {
            print " ".$j." ";
            break;      // hvis $nummerarray[$i] != $j  slutter vi løkken her
        }
                        // så uanset hvad kører løkken kun den ene tur igennem.
    }
}

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester