$colspan < 0 ? $colspan=6 : ''; Was heisst das

Kurzform einer If-Verzweigung...

PHP:
$colspan < 0 ? $colspan=6 : '';
entspricht

PHP:
if($colspan<0) {
    $colspan=6;
}

Der : Operator stellt den else-Teil der Verwzweigung dar (in diesem Fall nicht genutzt).

Ich persönlich find es nicht sonderlich angenehm, da es nicht schön zu lesen ist...
Aber das ist geschmackssache.

Ciao,
Mike
 
$colspan < 0 ? $colspan=6 : ''; entspricht eher
PHP:
if( $colspan < 0 ) {
	$colspan = 6;
} else {
	$colspan = '';
}
 
Gumbo hat gesagt.:
$colspan < 0 ? $colspan=6 : ''; entspricht eher
PHP:
if( $colspan < 0 ) {
	$colspan = 6;
} else {
	$colspan = '';
}
Das ist so nicht ganz richtig, da im Fall, in dem die Bedingung nicht zutrifft, $colspan nichts zugewiesen wird. Den else-Zweig müßtest Du weglassen.

Den ternären Operator benutzt man eigentlich in Zuweisungen, da er im Ganzen einen Rückgabewert hat:
PHP:
$colspan=($colspan<0)?6:'';
//entspräche:
if ($colspan < 0) {
    $colspan = 6
} else {
    $colspan = '';
}
Da ich nicht weiß, in welchem Zusammenhang der Ausdruck eingesetzt wurde, ist es natürlich fraglich, ob dies der Wunsch des Programmierers war.

Sinnvoll kann der Einsatz z.B. in echo-Anweisungen sein:
PHP:
echo '<td colspan="'.(($colspan<0)?6:$colspan).'">';
//entspricht:
if ($colspan < 0) {
    echo '<td colspan="6">';
} else {
    echo '<td colspan="'.$colspan.'">';
}
Sollte einem später einfallen, dass dem td-Tag weitere Attribute zukommen sollen, muss man in der ersten Variante nur eine Änderung durchführen, in der zweiten muss man zwei mal editieren. Kommen in einer Ausgabe (oder auch beim zusammensetzen eines Textes für ein Template-System, was der direkten Ausgabe vorzuziehen ist) mehrere bedingte Textänderungen (z.B. passende Formen für Einzahl und Mehrzahl) vor, finde ich es mit ternären Operatoren übersichtlicher, als mit etlichen if-else-Blöcken.

Auch beim Setzen von Default-Werten für übergebene Parameter kann der Einsatz sinnvoll sein:
PHP:
$einGetParameter=(isset($_GET['einGetParameter']))
    ?$_GET['einGetParameter']
    :'Standardwert';
//entspricht:
if (isset($_GET['einGetParameter'])) {
    $einGetParameter=$_GET['einGetParameter'];
} else {
    $einGetParameter='Standardwert';
}
Mik3e hat gesagt.:
Ich persönlich find es nicht sonderlich angenehm, da es nicht schön zu lesen ist...
Ich persönlich finde, dass die ternären Operatoren sehr gut zu lesen sind (, solange man sie nicht all zu sehr verschachtelt, was beim if die Lesbarkeit übrigends auch nicht erhöht). Aber, wie Du richtig sagst, ist das Geschmackssache. Alle, mit denen ich bisher im Team programmiert habe, haben mittlerweile keine Probleme mehr, mit ternären Operatoren umzugehen. :D

Soweit mein Wort zum Wochenende für den ternären Operator.

Gruß hpvw
 
hi hp,
schöner Spruch zum WE :)

Du hast recht, für "kleine" operationen bei Hilfsvariablen verwende ich auch die Kurzform... Nur bei "wichtigen" operationen finde ich die "normale" schreibweise angenehmer. Aber wie gesagt, ist Geschmackssache.

Was anders:
Nachdem Du ja ein Entwicklungs-Guru sein dürftest, kannst Du mir vielleicht helfen. Es geht mal wieder um Konzeption und Lösungsfindung (wie gewohnt von mir) ;)

Es ist mir echt ein Anliegen, aber bisher konnte ich nirgendwo eine gute Lösung finden.
Hier der Thread:
http://www.tutorials.de/tutorials221588.html

Danke & Ciao,
Mike
 
Zurück