Stefan: if, else und elseif - gehts auch kürzer?

Hallo zusammen,

habe eine include-Datei mit einer Sehr großen Anzahl an if, else und elseif - Entscheidungen, etwa in diesem Format:

if ($test == "blau";)
{
$test2 = "4444";
}
elseif ($test == "grau";)
{
$test2 = "2222";
}
elseif ($test == "gelb";)
{
$test2 = "1111";
}

... es folgen noch ca. 20 weitere ...

Kann man dies irgendwie schlauer programmieren? Geht das kürzer?
Vielen Dank für Eure Hilfe,

Gruß,
Stefan

  1. Kann man dies irgendwie schlauer programmieren? Geht das kürzer?

    Ja, entweder mit einem Array oder mit einem case-Block.

    Stefan

    1. Hallo Stefan,

      Ja, entweder mit einem Array oder mit einem case-Block.

      Was ist ein Case-Block?
      Hast Du ein Beispiel parat, das meinem Problem nahe kommt?

      Gruß,
      Stefan (der Fragende)

      1. Hallo Stefan!

        Bei lauter stefans wird man ja ganz wirr ... ;)

        Was ist ein Case-Block?
        Hast Du ein Beispiel parat, das meinem Problem nahe kommt?

        Schau mal ins PHP Manual, das sollte helfen! (--> http://www.php.net/manual/en/control-structures.switch.php)

        MfG
        Götz

      2. Was ist ein Case-Block?
        Hast Du ein Beispiel parat, das meinem Problem nahe kommt?

        switch($test1) {
         case 1111: $test2="blau"; break;
         case 2222: $test2="gruen"; break;
        }

        Stefan

  2. hi Stefan,

    naja, "if/elseif/else" kannst du nicht mehr verkürzen. Aber wenn es, wie in deinem Fall, 20 und mehr "elseif"-Ausweichbedingungen gibt, läßt sich das sicherlich mit einem Array lösen. Schreib das, was du hinter "elseif" jetzt immer in Klammern eingetragen hast, in einen Array, den du dann mit einer einzigen "if"-Anweisung auslesen lassen kannst.Ein zweiter Array nimmt dann die Anweisungen auf, so daß du im Prinzip so eine Konstruktion bekommst:

    if (array1[Nr])(array2[Nr])
    else (sorry, klappt nicht, falscher Fehler ...)

    Grüße

    Christoph S.

  3. Hi,

    if ($test == "blau";)
    {
    $test2 = "4444";
    }
    elseif ($test == "grau";)
    {
    $test2 = "2222";
    }
    elseif ($test == "gelb";)
    {
    $test2 = "1111";
    }
    ... es folgen noch ca. 20 weitere ...

    die alle immer nur $test2 in Abhängigkeit von $test einen Wert zuweisen?

    Wenn ja, dann bau Dir einen Übersetzungs-Hash, den Du mit dem Wert von
    $test indizierst.

    Viele Grüße
          Michael