Avatar billede googolplex Novice
05. maj 2003 - 23:10 Der er 7 kommentarer og
1 løsning

Switch - hjælp

Jeg skal køre en switch flere gange efter hinanden, hvor de enkelte cases IKKE skal udføres, hvis de allerede er blevet udført i en tidligere switch.

Er der en smart måde at løse det problem på ?
Avatar billede tipsen Nybegynder
05. maj 2003 - 23:19 #1
exit();
Avatar billede tefcke Nybegynder
05. maj 2003 - 23:21 #2
tilstands-variabler

hvis du kommer ind i et case, sætter du en variabel for den case, så du ikke kan komme ind i den igen!
Avatar billede googolplex Novice
05. maj 2003 - 23:22 #3
Det må du lige uddybe...
Avatar billede googolplex Novice
05. maj 2003 - 23:23 #4
Jeg har gjort således:

<?php
$venstre = $_REQUEST["venstre"];

for ($i = 1; $i <= strlen($venstre) ; $i++) {
    $flag = 0;

    switch ($venstre[$i-1]) {
        case 1:
            if ($boks[1] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/afstemning.php");
                $boks[1] = 1;
            } else {
                $flag = 1;
            }
            break;
        case 2:
            if ($boks[2] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/download.php");
                $boks[2] = 1;
            } else {
                $flag = 1;
            }
            break;
        case 3:
            if ($boks[3] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/seneste_artikler.php");
                $boks[3] = 1;
            } else {
                $flag = 1;
            }
            break;
        case 4:
            if ($boks[4] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/status.php");
                $boks[4] = 1;
            } else {
                $flag = 1;
            }
            break;
        case 5:
            if ($boks[5] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/tilfaeldige_links.php");
                $boks[5] = 1;
            } else {
                $flag = 1;
            }
            break;
        case 6:
            if ($boks[6] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/tilfaeldigt_citat.php");
                $boks[6] = 1;
            } else {
                $flag = 1;
            }
            break;
        default:
            $flag = 1;
    }
    if ($flag == 0) {
        echo "<div class=\"boksmellemrum\">
              </div>";
    }
}
?>

Kan det ikke gøres smartere ?
Avatar billede tefcke Nybegynder
05. maj 2003 - 23:29 #5
det med dit flag er godt nok, men du skal have et flag for hver case!
(eller opbevar flagne i et array)
Avatar billede googolplex Novice
05. maj 2003 - 23:32 #6
Øh, se bort fra flagene, de er der kun for at forhindre at den sidste boks bliver udskrevet.
Avatar billede tefcke Nybegynder
05. maj 2003 - 23:37 #7
ok ...

men noget ala det her skulle forhindre at det inde i dine case's bliver udført:

<?php
$venstre = $_REQUEST["venstre"];

$flagArray[] = array(); // fyld det med 1'er
for ($i = 1; $i <= strlen($venstre) ; $i++) {
        $flag = 0;

    switch ($venstre[$i-1]) {
        case 1:
            if ( $flagArray[1] ) {
            if ($boks[1] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/afstemning.php");
                $boks[1] = 1;
            } else {
                $flag = 1;
            }
            $flagArray[1] = 0;
          }
          break;
        case 2:
            if ( $flagArray[2] ) {
            if ($boks[2] != 1) {
                include($_SERVER["DOCUMENT_ROOT"] . "/bokse/download.php");
                $boks[2] = 1;
            } else {
                $flag = 1;
            }
            $flagArray[2] = 0;
          }
            break;
        case 3:
            if ( $flagArray[3] ) {

osv.


husk bare at fyld arrayet med 1 taller
Avatar billede googolplex Novice
08. maj 2003 - 20:51 #8
lukker
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