switch - continue funktioniert nicht wie erwartet

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • switch - continue funktioniert nicht wie erwartet

    Hallo,

    ich habe folgendes Problem: Ich will innerhalb eines Switch-Case-Konstruktes die Switchvariable ändern, und dann in der Verzweigung fortfahren. Leider klappt das so nicht:

    PHP-Code:
    $d='s';

    switch (
    $d){
    case 
    's':
    echo 
    "das s";
    if (
    1==1){
    $d='b';
    continue;
    }
    break;

    case 
    'b':
    echo 
    "das b";
    break;

    wobei die 1==1 Verzweigung in meinem richtigen Skript eine richtige Verzweigung darstellt...


    Also eigentlich erwarte ich als Ergebnis:
    Code:
    das s
    das b
    Tatsächlich erhalte ich nur
    Code:
    das s
    Kann es sein, das der PHP-Interpreter die Switchvariable irgendwo temporär zwischenspeichert, und deshalb diese Änderung der Variablen keinen Einfluß hat?

    cu

    cP

  • #2
    afaik erfolgt die entscheidung welcher Fall eintritt ganz am Anfang, nämlich beim switch(). Du veränderst die variable später.

    Kommentar


    • #3
      Hallo,

      ja, aber sollte er mit "continue" nicht wieder bei switch($d)... beginnen?


      cu

      cP

      Kommentar


      • #4
        Original geschrieben von crazyPower
        ja, aber sollte er mit "continue" nicht wieder bei switch($d)... beginnen?
        Nein, wieso?

        switch ist keine Schleife.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Switch ist keine Schleife.


          continue
          continue wird innerhalb von Schleifen verwendet. Die Schleife wird an der aktuellen Stelle abgebrochen und es wird der nächste Durchlauf begonnen.
          aus: http://de.php.net/manual/de/control-...s.continue.php

          EDIT:
          misst, zu spät

          Kommentar


          • #6
            Hallo,

            danke für die Hinweis. Aber die Deutung in die Reichtung, das es funktionieren müsste sei mir Aufgrund dieses Satzes gestattet

            Die switch-Anweisung ist gleichbedeutend einer Reihe von if-Anweisungen mit dem gleichen Parameter.
            Siehe :
            http://de.php.net/manual/de/control-...res.switch.php

            Wenn ich in einer If-Verzweigung die Vergleichsvariable ändere, wird das berücksichtigt. Beim Switch anscheinend nicht...

            cu

            cP

            Kommentar


            • #7
              Bei einem If kannst du allerdings ein else benutzen um das gegenteil zum tragen zu bringen.

              Bei Switch benutzt du die übergebene Variable einmal um einen Fall festzulegen und dementsprechend zu handeln.

              Wenn du in deinem Code nur einen Fall prüfen und dementsprechend den Inhalt deine Var setzen willst dann sollte fogendes genauso gut funktionieren.

              PHP-Code:
              $d = (1==1) ? "s" "b"
              Ansonsten solltest du mal dein Vorhaben und den dazugehörigen Code Posten, dann wird dir bestimmt geholfen.
              gruss Chris

              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

              Kommentar


              • #8
                Es ging mir mehr ums Prinzip.

                Nachdem klar war das es so nicht geht, hab ich das Problem mittels if-Verzweigungen gelöst!

                Sieht zwar nicht so schön aus, funktioniert aber...

                cu

                cP

                Kommentar

                Lädt...
                X