php Тернарный оператор без else (без ветки ложности, в неполной форме) -- если ли он в природе
Primary tabs
В чистой форме варианта без else пока что не существует, да и если бы он существовал, то оказалось бы, что для несуществующей ветки (else) надо возвращать null, что не очень понятно как применять (т.е. полезность тернарного оператора в неполной форме сомнительна или неочевидна).
Что есть похожее:
-
Краткая запись тернарного оператора
Тернарный оператор начиная с версии PHP5.3 позволяет не прописывать ветку истинности -- тогда он склеивается в оператор ?:, причем работает правило:
Выражение expr1 ?: expr3 возвращает expr1 если expr1 имеет значение TRUE и expr3 в противном случае.
- т.е. то что стоит до знака вопроса тоже возвращается, как значение, так как сокращенный вариант
$a ?: $b
эквивалентен
$a ? $a : $b
Таким образом, эта краткая форма придумана что не дублировать первую часть (подходит для ряда решений).
Использование сокращенного тернарного оператора без присваивания
Можно использовать сокращенный тернарный оператор как замену if в неполной форме (но для этого придется использовать оператор отрицания на условии), такой вот не особо очевидный код (тут уж без присваивания):
$a = 1; // тераный в псевдонеполной форме !true ?: $a = 2; print_r($a); // выведет 2
(использовать данный подход не рекомендую в силу плохой читаемости)
- Null-коалесцентный оператор (??) -- позволяет проверять на null и несуществование значения, хотя и чем-то похож, но тернарным не является (так как участвую только два значения, а не три).
- Log in to post comments
- 7423 reads