Frage zu Php was bedeutet dieses Fragezeichen (Siehe Bild)?

php - (programmieren, PHP)

4 Antworten

Der ternäre Operator ist eigentlich zur Auswertung eines boolschen Ausdrucks gedacht. Je nachdem, ob dieser wahr (?) oder falsch (:) ist, kann ein entsprechender Wert zurückgegeben werden.

Bsp.:

$gerade = $zahl % 2 == 0 ? "gerade" : "ungerade";

Der mittlere Teil kann dabei auch weggelassen werden, dann ist der Rückgabewert entweder das Ergebnis des Ausdrucks oder der optionale Ausdruck.

In diesem Fall würde das Ergebnis also entweder 1 sein oder ungerade.

$gerade = $zahl % 2 == 0 ?: "ungerade";

Beachte aber, einen IF-Ersatz stellt dieser Operator nicht dar, dafür ist der Ausdruck nicht gedacht.

$zahl == 5 ? echo "wahr" : echo "falsch"; // falsch!

Auch, wenn in PHP so etwas funktionieren mag...

function a(){ echo "a"; }

function b(){ echo "b"; }
true ? a() : b();

Diese Notation ist die Kurzschreibweise von IF Verzweigung

IF dies THEN das ELSE was anderes

dies ? das : was anderes

also vor dem Fragezeichen kommt der boolische ausdruck

danach das was bei wahr passiert

und nach dem doppelpunkt dann das was bei falsch passiert.



Also wenn die Bedingung vor dem Fragezeichen erfüllt ist, dann passiert das und das?

0
@xBlackMass

(3+4 == 7 ) ? echo "richtig" : echo "falsch"

ich  hab mal den syntax ausser acht gelassen

0
@RakonDark

Der ternäre Operator ist kein Ersatz für IF-ELSE. Dein Beispiel ist ein mustergültiges Beispiel, welches eine Runtime Exception auslösen würde.

So wäre es hingegen richtig:

echo (3 + 4 == 7 ) ? "richtig" : "falsch";
3
@regex9

Richtig, es ist ähnlich zu if-else aber es gibnt schon wichtige Unterschiede.

0

Bedingter Ausdruck bzw. Auswahloperator (ternary conditional).

Die Form ist dabei:

Audruck ? zutreffend : nichtzutreffend

Existiert in diversen Programmiersprachen, ist zwar praktisch, aber fördert nicht unbedingt die Lesbarkeit und Ausdrucksstärke. (Sonderfälle mal ausgenommen)

Das ist ein ternärer operator. Im prinzip wie ne if abfrage das ganze da