Ternäre Operator-String-Verkettung – unerwartetes Ergebnis
In einem aktuellen Codierungsszenario hat ein bestimmtes Codeverhalten einen Entwickler verwirrt. Der betreffende Code verwendet den ternären Bedingungsoperator, um einen Zeichenfolgewert basierend auf einer bestimmten Bedingung zu bestimmen. Die Ergebnisse sind jedoch nicht wie erwartet.
Der Kodex und die Beobachtung
Der untersuchte Kodex ist wie folgt:
$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';
Die Absicht Hinter diesem Code steckt die Zuweisung von „Paper: Bond“ zur Variablen $description, wenn $paperType „bond“ ist, und „Paper: Other“, wenn $paperType nicht „bond“ ist.
Bei der Ausführung von Code hat der Entwickler festgestellt, dass $description entweder direkt der Wert „Bond“ oder „Other“ zugewiesen wird, ohne das erwartete Präfix „Paper:“. Dieses scheinbar seltsame Ergebnis hat die Suche nach einer Erklärung ausgelöst.
Die Lösung
Bei näherer Analyse wird deutlich, dass rund um den ternären Ausdruck Klammern weggelassen wurden. Durch diese Auslassung wird die Reihenfolge der Vorgänge geändert, was zu unerwartetem Verhalten führt.
Der korrekte Code sollte wie folgt lauten:
$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');
Wenn die Klammern vorhanden sind, ist die Zeichenfolge „Paper:“ korrekt verkettet mit dem Ergebnis des ternären Ausdrucks, um sicherzustellen, dass die gewünschte Ausgabe erreicht wird.
Das obige ist der detaillierte Inhalt vonWarum kommt es zu einem unerwarteten Ergebnis bei der Verkettung ternärer Operatorzeichenfolgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!