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 René
Gerade getestet: funktioniert auch nicht mit PHP5.
Kommentar von Micha
Hi,
>> Leider funktioniert das Konstrukt nicht in PHP
Dazu fiel mir folgendes Zitat ein:
http://community.de.selfhtml.org/zitatesammlung/zitat395
LG Micha
Kommentar von magnus
Statt <?echo $variable;?>
geht auch <?=$variable?> (ohne ;)
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 magnus
$meineVariable=$meineVariable+1;
$meineVariable++;
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
Bisherige Trackbacks (0)
Es wurde noch kein Trackback empfangen!