H@nnib@ll: Problem mit if ($var == 10 or 20 or 30)

Hallo Forumler,

Wie schon aus der Ueberschrift zu sehen habe ich ein Problem mit einer if-Kontrollanweisung! Mein Originalcode sieht so aus:

$count = 1;
if ($count == 10 or 20 or 30 or 40){
echo "</tr><tr>";
}
$count++;

Jedoch wird bei jedem Durchlauf der while-Schleife in der die if-Kontrollanweisung definiert ist das </tr><tr> ausgegeben obwohl $count ja offensichtlich den erforderlichen Wert erfuellt!

Gibt es eine logische Erklaerung? Was mache ich falsch?

Besten Dank im voraus!

Gruss

H@nnib@ll

  1. Hallo Forumler,

    moin

    Wie schon aus der Ueberschrift zu sehen habe ich ein Problem mit einer if-Kontrollanweisung! Mein Originalcode sieht so aus:

    $count = 1;
    if ($count == 10 or 20 or 30 or 40){
    echo "</tr><tr>";
    }
    $count++;

    Jedoch wird bei jedem Durchlauf der while-Schleife in der die if-Kontrollanweisung definiert ist das </tr><tr> ausgegeben obwohl $count ja offensichtlich den erforderlichen Wert erfuellt!

    Gibt es eine logische Erklaerung? Was mache ich falsch?

    "or" ist ein befehl, du musst hier aber einen logischen operator verwenden, in diesem fall beduetet || "oder",
    also:
    $count = 1;
    if ($count == 10 || 20 || 30 || 40)
    {
    echo "</tr><tr>";
    }
    $count++;

    Besten Dank im voraus!

    bittschö

    Gruss

    Fabian

    H@nnib@ll

  2. Hi,

    if ($count == 10 or 20 or 30 or 40){

    selbst wenn $count!=10 ist, ergeben 20, 30 und 40 immer wahre Werte. Da Du diese oder-verknüpfst, reicht ein mal "true", um in den if-Zweig zu gelangen.

    Gibt es eine logische Erklaerung? Was mache ich falsch?

    Du meinst eigentlich

    if ($count==10 or $count==20 or $count==30 or $count==40)

    Cheatah

  3. Hoi,

    if ($count == 10 or 20 or 30 or 40){

    *grausel* das erinnert mich an Cobol. *Da* waere dein Code richtig, abgesehen von
    leichten syntaktischen Unterschieden :-)
    Aber hier verknuepfst du mit 'or' Ausdruecke. Will heissen, es wird der Reihe
    nach ausgewertet, bis ein wahrer Ausdruck gefunden wird. Zuerst wird geschaut,
    ob $count gleich 10 ist. Wenn nicht, wird der naechste Ausdruck genommen. Das ist
    in diesem Falle '20'. Da 20 ungleich 0 ist, ergibt er 'true'. Ich hoffe, du
    verstehst jetzt den Unterschied zwischen der Art, wie Cobol und PHP das
    handeln :-)

    Gruesse,
     CK