dedlfix: Problem mit der switch Verzweigung

Beitrag lesen

echo $begrüßung;

Naja ich wollt den Quelltext kurz halten und die Räume die da mit 'und' verknüpft sind liegen genau nebeneinander.

Niemand kann gleichzeitig in Raum 1 UND in Raum 2 sein, nur in Raum 1 ODER Raum 2.

Das Problem ist hier nicht die UND/ODER-Logik. Hier findet seitens PHP folgendes statt:

switch (testausdruck) {
    case ausdruck1:
    case ausdruck2:
    ...
  }

Im konkreten Fall ist ausdruck1 1 && 2. Das wird von PHP erst einmal ausgerechnet. Ein Ausdruck a && b ergibt entweder true oder false. 1 wird ebenso wie 2 durch Typumwandlung zu true. true && true ergibt true. Das gleiche passiert mit allen anderen Zahlenwerten ungleich 0.

Das switch-Statement sieht also so aus:

switch (testausdruck) {
    case true:
    case true:
    ...
  }

Wenn als testausdruck etwas übergeben wird, dass bei einem Vergleich mit true ein true ergibt, ist die Bedingung des ersten case-Falles erfüllt.

echo "$verabschiedung $name";