Hi!
Diese Kurzschreibweise findet man in vielen (höheren) Programmiersprachen.
Wieso Kurzschreibweise? Es ist das Normalste von der Welt, das Ausdrucksergebnis direkt einer Variable zuzuweisen.
$a = $b + $c;
Hier würdest du auch nicht von einer Kurzschreibweise reden. Bei
$a = $b > $c;
kommt eben true oder false als Ergebnis. Im Gegensatz zur Mathematik werden beim Programmieren nicht nur Berechnungsausdrücke geschrieben sondern auch solche, die beispielsweise Vergleiche anstellen.
Sie bedeutet:
if ($var2[0] > 0)
{
$var1 = true;
}
else
{
$var1 = false;
}
So würde das aber kein Programmierer mehr schreiben.
Eben. Diese "Schreibweise" mag der Erklärung dienen, ist aber ansonsten nicht besonders gut. Sie ist umständlich: "Wenn es wahr ist, dass $b größer als $c ist, dann weise $a 'wahr' zu, ansonsten weise $a 'unwahr' zu." Sie verwirrt: "Warum so ausführlich, steckt vielleicht eine andere Logik als bei einer einfachen Zuweisung dahinter?" Sie verbraucht mehr Rechenzeit (auch wennn sie bei einer geringen Anzahl von Ausführungen im Grundrauschen untergehen wird).
Allerdings gibt es einige, die Wert darauf legen, bei der Kurzschreibweise zusätzlich Klammern zu setzen:
$var1 = ($var2[0] > 0);
Bei einem einfachen komplett eindeutigen Ausdruck? Nichts gegen eine Klammerung, wenn sie der Eindeutigkeit dient, aber wer es nur aus Prinzip macht und Konventionen über Sinnfälligkeit stellt, sollte sich auch nicht wundern, wenn die überflüssigen Klammern irgendwann schaden.
Der Unterschied zwischen einem
return ($var);
und einem
return $var;
ist, dass bei der Klammerung von $var ein Ausdruck entsteht, der aufgrund der Klammern zuerst berechnet wird, wobei ein Ausdrucksergebnis entsteht, das dann über das return zurückgegeben wird. Im Falle ohne Klammern wird der Variableninhalt direkt zurückgegeben. Das hat dann Auswirkungen, wenn man mit Referenzen arbeitet. Auf Variablen kann man Referenzen legen, auf Ausdrucksergebnisse nicht.
Lo!