Verständnisfrage If/Else

Hi,

ich habe ein kleines Script zum schalten einer "Dummy"Boolean aufgesetzt. Es soll nur der Zustand An/Aus angezeigt werden. Ziel ist es eine Integer abzufragen und bei einem bestimmten Wert die Boolean zu schalten.

<?
if (GetValueInteger(44096 === 255));
{
SetValueBoolean (36203, true);
}
else
{
SetValueBoolean (36203, false);
}
?>

Ich bekomme jedoch folgende Fehlermeldung:


Parse error:  syntax error, unexpected 'else' (T_ELSE) in /var/lib/symcon/scripts/54432.ips.php on line 6
Abort Processing during Fatal-Error: syntax error, unexpected 'else' (T_ELSE)
   Error in Script /var/lib/symcon/scripts/54432.ips.php on Line 6

Ich kann mir da gerade keinen Reim drauf machen. Ich habe andere Skripte wo es genauso aufgebaut ist und ohne Probleme funktioniert.

=== 255)); ohne ; nur === 255))

Gesendet von iPhone mit Tapatalk

Danke! Vorher beschriebener Fehler ist weg, jetzt meckert er, dass die Variable nicht existiert. Was aber nicht der Fall sein kann, da er die ID in´s Script eingefügt hat :confused:

Das ist falsch 44096 === 255
Kommt immer false raus.
Somit hast du GetValueInteger(false)
Und nicht GetValueInteger(44096) === 255.
Michael

Sorry da steh ich gerade auf dem Schlauch…wie muss es denn aussehen?

Die Integer gibt nur 2 Werte aus 0 und 255

Da stimmt doch was mit den Klammern nicht…
So müsste es gehen:

<? 
if (GetValueInteger(44096)== 255); 
{ 
SetValueBoolean (36203, true); 
} 
else 
{ 
SetValueBoolean (36203, false); 
} 
?>

if (GetValueInteger(44096) == 255) {

Danke jetzt funktioniert es!

Mein Fehler war also, dass ich die „If“ Variable separat in Klammern setzen musste, korrekt?
Kann mir jemand fix sagen, warum das so ist bzw. wo der Unterschied liegt?

Das hat doch Nall Chan bereits geschrieben s.o. . Du must erst den Wert abholen und dann den Inhalt der Variable vergleichen und nicht zwei Zahlen deswegen die Klammern.

Ah…Bedeutet:

(GetValueInteger (12345 === 255)) ist der Vergleich zwischen zwei Zahlen. In dem fall habe ich 12345 mit 255 verglichen
(GetValueIntger (12345) === 255) liest dann tatsächlich zuerst die Variable aus und gleicht diese Zahl dann ab.

Danke :slight_smile: