renephoenix.de

Kurzschreibweise

Häufig will man einer Variable einen Wert zuweisen — aber es kommen zwei mögliche Quellen in Frage, von denen meist eine leer ist (z.B. beim Auslesen von Systemparameter).

Variante 1: Die klassische Schreibweise:

var a = 1; var b = 0; var c = 0;
if (b)
  c = b;
else
  c = a;

Variante 2: Die elegante Form

var c = b ? b : a;

Das Konstrukt ist wesentlich kürzer, hat aber noch einen Haken: der Ausdruck b ist doppelt.

Variante 3: Das Optimum

var c = b || a;

Wenn b leer bzw. 0 ist, greift die ODER-Regel — und a wird übergeben. Leider funktioniert das Konstrukt nicht in PHP, mit JavaScript dagegen schon.

Bisherige Kommentare (10)

Kommentar von Pablo

Oho.. Das letzte ist ja wirklich elegant, ist mir so noch nie über den Weg gelaufen.

Aber dennoch ist mir die Schreibweise unsympathisch. Ich mag diese Kurzformen nicht, die sehen immer so aus, als ob sie nicht überall laufen würden, auch wenn das Quatsch ist.

Btw, schöne Textarea Vergrößerung. ;)

Kommentar von Nini

$c = $b ? $b : $a;

Sowas mag ich überhaupt nicht. Genausowenig wie z.B. +=. Ich will beim lesen von Quelltext nicht erst überlegen müssen, was da eigentlich passiert. So schleichen sich schon beim Schreiben Fehler ein und beim Debuggen wird es nicht besser (»Was mache ich hier eigentlich?«). Geht zumindest mir so.
Ich hasse Leute, die immer alles abkürzen und inenander schachteln müssen, um sich eine Deklaration o.ä. zu sparen...

Kommentar von Nini

Zu deiner Änderung: ;-)
Warum sollte Variante 3 in php 5 anders funktionieren?
Der Php-Interpreter macht doch das einzig richtige und wertet es als logischen Ausdruck aus. Javascript war mir schon immer zu schludrig *grusel* ;-)
(Ich weiß es praktisch allerdings auch nicht, da ich es nicht ausprobiert habe.)

Kommentar von magnus

$c = $b ? $b : $a; macht ja auch keinen Sinn!

Das würde heissen c ist gleich b wenn b sonst a. Für was soll das gut sein? c= ist eine Zuweisung eines Wertes an eine Variable.

Genial ist doch aber, statt:
if (a$==1) {
  echo »Variable a ist eins«;
} else  {
  echo »Variable a ist auf keine Fall eins«;
}

schreiben kann:
echo (a$==1)
  ? »Variable a ist eins«;
  : »Variable a ist auf keine Fall eins«

Zum Kommentar von Nini (oben)
-----------------------------
Ich finde den += Operator genial.
Statt: $n=$n+1;
einfach: n++;
oder
$meineVariable=$meineVariable+1; einfach
$meineVariable»«;
Zugegeben, ist etwas gewöhnungsbedürftig.

Kommentar von René

Das würde heissen c ist gleich b wenn b sonst a. Für was soll das gut sein? c= ist eine Zuweisung eines Wertes an eine Variable.

Genau! Zum Beispiel beim Überprüfen von Systemparametern für mehrere PHP-Versionen ...

Kommentar von Matthias

> Das würde heissen c ist gleich b wenn b
> sonst a. Für was soll das gut sein?
b ist auch dann, wenn es ein int (ungleich 0) oder ein String (nicht leer) ist.

Einfach mal folgendes ausprobieren:
[php]$b = 'Hallo';
echo($b ? $b : '');[/php]

Kommentar verfassen

Freiwillige Angabe
Freiwillige Angabe
Der Text kann mit Textile formatiert werden, z.B. *fett* _kursiv_ "link":url. Wie das geht?
Wieviel ist 40 plus 2?

Bisherige Trackbacks (0)

Es wurde noch kein Trackback empfangen!