Zuweisung und ODER
heinetz
- php
0 Vinzenz Mai0 suit
0 Der Martin0 heinetz
0 Texter mit x
Hallo Forum,
ich frage mich gerade, ob es soetwas wie eine verkürzte Zuweisung gibt.
$res = NULL;
$a = "x";
$b = "y";
$c = "z";
Ich möchte gerne, dass $res den Wert von $c annimmt, wenn $c belegt ist, den Wert von $b annimmt, wenn $b, aber nicht $c belegt ist und den Wert von $a annimmt, wenn $b und $c nicht bekegt sind. Das kann man atürlich mit switch oder if/else-Konstruktionen lösen, aber ich stelle mir etwas vor, dass etwa so
aussehen könnte:
$res = ($a||$b||$c);
Das funktioniert so natürlich nicht, aber gibt es vielleicht etwas eleganteres als if/else oder switch?
danke für Tipps und
beste gruesse,
heinetz
Hallo,
$res = NULL;
$a = "x";
$b = "y";
$c = "z";
Ich möchte gerne, dass $res den Wert von $c annimmt, wenn $c belegt ist,
was verstehst Du unter $c ist belegt?
den Wert von $b annimmt, wenn $b, aber nicht $c belegt ist und den Wert von $a annimmt, wenn $b und $c nicht bekegt sind. Das kann man atürlich mit switch oder if/else-Konstruktionen lösen,
Das funktioniert so natürlich nicht, aber gibt es vielleicht etwas eleganteres als if/else oder switch?
Freundliche Grüße
Vinzenz
Bei zwei Zuständen ist der Trinäre-/Ternäre-Operator ok - bei drei möglichen Zuständen muss man ihn aber bereits verschachteln, das schränkt die Lesbarkeit bereits enorm ein - hier würde ich eher eine weniger elegante Lösung mit einer gewöhnlichen Verzweigung "ein paar Zeilen" darüber empfehlen :)
Hallo suit,
Bei zwei Zuständen ist der Trinäre-/Ternäre-Operator ok - bei drei möglichen Zuständen muss man ihn aber bereits verschachteln, das schränkt die Lesbarkeit bereits enorm ein - hier würde ich eher eine weniger elegante Lösung mit einer gewöhnlichen Verzweigung "ein paar Zeilen" darüber empfehlen :)
da stimme ich Dir aus ganzem Herzen zu: Lesbarkeit geht vor kryptischer Eleganz.
Freundliche Grüße
Vinzenz
Hallo,
Ich möchte gerne, dass $res den Wert von $c annimmt, wenn $c belegt ist, den Wert von $b annimmt, wenn $b, aber nicht $c belegt ist und den Wert von $a annimmt, wenn $b und $c nicht bekegt sind. Das kann man atürlich mit switch oder if/else-Konstruktionen lösen, aber ich stelle mir etwas vor, dass etwa so aussehen könnte:
$res = ($a||$b||$c);
in Javascript würde dieses Konstrukt leisten, was du beschreibst - allerdings in umgekehrter Reihenfolge: Da würde bevorzugt $a zugewiesen; falls nicht definiert, dann $b, zuletzt $c. PHP interpretiert den ODER-Operator aber als rein boolschen Operator, da wird dieser Ausdruck immer nur true oder false liefern.
Aber der Fragezeichen-Operator in Verbindung mit isset() könnte dir weiterhelfen.
Ciao,
Martin
Hi,
in Javascript würde dieses Konstrukt leisten, was du beschreibst - allerdings in umgekehrter Reihenfolge: Da würde bevorzugt $a zugewiesen; falls nicht definiert, dann $b, zuletzt $c.
genau, weil ich das Konstruk letztens irgendwo gesehen habe,
dachte ich daran, ob es soetwas ähnliches in php auch gibt.
Die verkürzte if ist mir bekannt.
beste gruesse,
heinetz
$a = 'x';
$b = false;
$c = Null;
if (($res = $c) OR ($res = $b) OR ($res = $a)) {
echo $res;
}
so?