Was Sie letztendlich erreichen wollen, ist mit einem ternären Operator nicht möglich.
Was Sie versuchen, ist NUR in 1 Situation zurückzukehren, und den Code in der anderen fortzusetzen. Die einzige Möglichkeit, dies mit einem ternären Operator tun können, ist wie folgt:
$result = ($sth !== true) ? true : false;
if ($result) return;
Aber das irgendwie Niederlagen der Zweck des ternären Operator.
In der Tat hat Ihren Code ein paar Probleme:
- Ternary Bediener muss immer 3 Teile (*)
- Es gibt keine Notwendigkeit, eine Bedingung zweimal zu überprüfen, wie die gesamte ist Punkt des Bedieners
- Der Operator gibt einen Wert zurück, so dass Sie keinen
return
innerhalb des truthy oder falsy Teils setzen können.
Ternäre Operator benötigt 3 Teile
(condition) ? truthy result : falsy result
Hinweis: Seit PHP 5.3 ist es möglich, den mittleren Teil des ternären Operator auszulassen. Expression expr1?: Expr3 gibt expr1 zurück, wenn expr1 TRUE ergibt, andernfalls expr3. - Quelle: php.net
Keine Notwendigkeit, Dinge zu überprüfen doppelt:
Auch hier wollen wir unsere Betreiber nehmen:
($sth !== true)
? "I return if '$sth' is not true"
: "I return if '$sth' is true";
Es gibt keine Notwendigkeit, eine zweite Kontrolle zu haben. Sie haben beide Situationen bereits abgedeckt. :)
Keine Rückgabewerte innerhalb des truthy oder falsy Teil
Schließlich: Es ist ein Operator, der einen Wert zurückgibt.Sie können keine return
im truthy oder falsy Teil setzen, müssen Sie es vor ihm setzen:
return ($sth !== true)
? "I return if '$sth' is not true"
: "I return if '$sth' is true";
Und warum versuchen Sie es zu ersetzen? Sieht das Original nicht besser für Sie aus? – mario
Ich möchte nur lernen, wie dies mit ternary zu tun, aber ja die erste ist lesbarer – Sandokan
Was passiert, wenn '$ sth' ist wahr? Falsch zurückgeben? – frankle