6 Stimmen

Müssen Sie einen falschen Wert in einem ternären Operator PHP einschließen?

Ich muss Daten an einen String anhängen, wenn eine bestimmte Variable wahr ist. Andernfalls muss ich nichts anhängen. Derzeit mache ich folgendes:

$string = (Bedingung()) ? 'etwas'.$string.'etwas' : $string;

Gibt es eine Möglichkeit, die falsche Option in einem ternären Operator zu überspringen? Es scheint verschwenderisch zu sein, $string = $string zu sagen, wenn die Bedingung falsch ist.

4voto

gregheo Punkte 4162

Sie können es nicht überspringen. Sie könnten es jedoch als eine Zeile if Bedingung umschreiben:

if (condition()) $string = 'etwas'.$string.'etwas';

1voto

paxdiablo Punkte 809679

Nein, es gibt keine Möglichkeit, es zu überspringen. Wenn Sie den falschen Teil überspringen möchten, kehren Sie zur if-Methode zurück:

if (condition()) $string = 'etwas' . $string . 'etwas';

Die ternäre Methode ist sowieso nur eine verkürzte if-Anweisung. Wenn Sie die if-Anweisung genauso kurz machen können, ohne die Lesbarkeit zu beeinträchtigen (wie im obigen Beispiel), sollten Sie es in Betracht ziehen.

Aber um ehrlich zu sein, würde ich das sogar formatieren, um es lesbarer zu machen:

if (condition())
    $string = 'etwas' . $string . 'etwas';

Es sei denn, Sie sind verzweifelt nach Monitorhöhe, das wird auf den ersten Blick einfacher zu verstehen sein :-)

1voto

Gordon Bailey Punkte 3831

Ja, das musst du. Betrachte den ternären Operator als eine Funktion. Was würdest du erwarten, dass das Verhalten ist, wenn du etwas wie dies machst, aber keine Zuweisung machen möchtest, wenn condition() zu false ausgewertet wird:

$string = ternary(condition(), $yesValue, $noValue);

Es gibt keinen Weg, wie du die Zuweisung an die Variable $string abbrechen kannst, wenn condition() zu false ausgewertet wird.

-1voto

Kai Qing Punkte 18675

Nein. Das ist der Zweck eines Ternäroperators. Wenn du keinen falschen Wert möchtest, warum lässt du condition() dann nicht einfach den Wert zurückgeben, den du brauchst?

Etwas so:

$string = condition($string);

function condition($string){
    if($string == 'whatever')
    {
        $string = 'something'.$string.'something';
    }

    return $string;
}

Ich sehe, dass mir alle anderen schon zuvorgekommen sind, hier sind also die Dokumente für den Ternäroperator:

http://php.net/manual/en/language.operators.comparison.php

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X