MyBB.de Forum

Normale Version: PHP / Alternative Kontrollstrukturen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

mal eine Frage zu dem o.a. Thema:

Folgenden Code
PHP-Code:
    if ($sortby == 'pid'){
        if (
$order == 'asc'){
            
$order_pid 'desc';
        }
        elseif (
$order == 'desc') {
            
$order_pid 'asc';
        }
    } 

kann man mit Hilfe der alternativen Kontrollstrukturen um einiges kürzer auch so ausdrücken
PHP-Code:
$order_pid = ($sortby == 'pid') ? ($order == 'asc' 'desc' 'asc') : 'asc'

Soweit konnte ich mir das nun schon mal erklären. Wink

Was ich aber einfach nicht gebacken bekomme ist: wie wird folgender Code in gekürzter Form geschrieben?
PHP-Code:
    if ($sortby == 'pid'){
        if (
$order == 'asc'){
            
$order_pid 'desc';
            
$order_lang $lang->desc;    // <----
        
}
        elseif (
$order == 'desc') {
            
$order_pid 'asc';
            
$order_lang $lang->asc;    // <----
        
}
    } 
Sprich, wie bekomme ich die beiden $order_lang Variablen in die Kurzform integriert?

Ich hatte das mal so probiert, aber das funktioniert nicht:
PHP-Code:
$order_pid = ($sortby == 'pid') ?
(
$order == 'asc' 'desc'$order_lang $lang->desc; : 'asc') :
'asc'$order_lang $lang->asc
Ich bin kein Fan davon, weshalb ich das auch fast nie nutze... Das ist nur unübersichtlich und hat auch keine wirklichen Vorteile. Wink Ich wüsste jetzt auch nicht, wie man das machen könnte.
Ja, das mit der Übersichtlichkeit ist sicher so eine Sache....
Die Möglichkeit, den Code auch so schreiben zu können, fand ich aber ganz interessant. Wink

Danke für Deine Antwort. Smile
Da diese Art der Kontrollstruktur nur eine Variable verarbeitet geht es nur über ein Array als Umweg.

PHP-Code:
$set[1]=Array("pid"=>"desc","lang"=>$lang->desc);
$set[2]=Array("pid"=>"asc","lang"=>$lang->asc);
(
$sortby=="pid" ? ($order=="asc"?$ret=&$set[1]:$ret=&$set[2]):null); 

Wobei hier die $set Variable eine vorbelegtes Ergebnisset darstellt das dann in $ret als Referenz (durch &) übergeben wird. Lesbarer sind natürlich die gebräuchlicheren if-Strukturen.
Super! Danke für die Info. Smile

Mir sind die üblichen Strukturen auch lieber, die man auch noch nach Monaten lesen kann und nicht jedes Mal wieder hinterfragen muss um sie nachvollziehen zu können. Wollte die alt. Kontrollstrukturen halt einfach gerne verstehen. Wink