Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
PHP / Alternative Kontrollstrukturen
#1
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
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#2
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.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
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
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#4
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.
Dies ist keine Rechtsberatung - kein Support außerhalb des Board
Zitieren
#5
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
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren