Suche Fehler beim Erstellen eines Strings für IPS_LogMessage

Hallo,
ich will eine Meldung erstellen:


$isWeekEnd = true;
IPS_LogMessage($_IPS['SELF'], "> Es ist ".$isWeekEnd ? "Wochenende" : "Werktag"." heute.");

Es wird aber nicht der vollständige Satz ausgegeben, sondern nur das Wort „Wochenende“.
Wenn ich den Code ändere, d.h. ich schreibe das Ergebnis vorher in die Variable $weekDay, dann wird der vollständige Satz angezeigt.


$isWeekEnd = true;
$weekDay = $isWeekEnd ? "Wochenende" : "Werktag";
IPS_LogMessage($_IPS['SELF'], "> Es ist ".$weekDay." heute.");

Wo ist der Fehler in der ersten Schreibweise?

Grüße
Alexander

In der ersten Schreibweise fehlen wohl Klammern.

Versuch mal

$isWeekEnd = true; 
IPS_LogMessage($_IPS['SELF'], "> Es ist " . ($isWeekEnd ? "Wochenende" : "Werktag") . " heute.");  

Hallo bumaas,
das funktioniert. Hast du eine Erklärung dafür, dass der Ausdruck in Klammern stehen muss?

Grüße
Alexander

Weil ohne Klammer der false Wert Werktag + heute ist und der True Wert nur Wochenende ist.
Ohne Klammer weiß PHP nicht wo dein Vergleich bzw die Werte enden.
Michael