Frage von RaceShafter, 37

Welche If-Abfrage sit nochmal richtig?

Es handelt sich um PHP.

Diese hier:

if($page == "login" && $LoggedIn == "true"){

}

ODER

if($page == "login") && ($LoggedIn == "true"){

}

Bringe das mit den Klammern immer voll durch einander.

Antwort
von triopasi, 13

Prinzipiell heisst es

IF(BEDINUNG)

Die Bedingung selbst darf so viele Klammern enthalten wie du willst, aber die Klammern vom IF MÜSSEN da sein.

Antwort
von bormolino, 22

Entweder:

if($page == "login" && $LoggedIn == "true")

oder

if(($page == "login" && $LoggedIn == "true"))

auch das ist möglich (aber unnötig kompliziert)

if((($page == "login") && ($LoggedIn == "true")))

Wobei ich bei String-Vergleichen eher den === Operator nehmen würde.

Grüße - bormolino

Kommentar von RaceShafter ,

Danke. Erstens, wie schreibt man den Code so umrandet? Und zweitens, weshalb ist === besser?

Gruß

Kommentar von bormolino ,

Das geht über den Button "Codebeispiel einfügen" im Editor (der 5. Button von Links) mit diesem Zeichen <>.

Zur zweiten Frage verweise ich auf das Manual: https://secure.php.net/manual/de/language.operators.comparison.php

Der Unterschied ist die Typ-Prüfung.

Kommentar von RaceShafter ,

Vom gleichen Typ? Verstehe ich irgendwie nicht :(

Kommentar von fluffiknuffi2 ,

@RaceShafter 

1 == '1' ist richtig, 1 === '1' ist falsch. 

Warum?

Weil beim ersten eine automatisch Typumwandlung stattfindet. 1 ist ja vom Typ int und '1' ist vom Typ String, aber PHP kann sie automatisch umwandeln: aus 1 kann '1' werden bzw. aus '1' kann 1 werden. PHP macht dann intern bspw. '1' == '1' daraus und das ist ja wahr. 

Bei  1 === '1' steigt PHP sofort aus und bewertet den Ausdruck als false, weil der Typ unterschiedlich ist.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten