こんにちは、さるまりんです。
できないことを書くのもなんなのですが。。
3項演算子がSmartyで使えないかと調べてました。
3項演算子
3項演算子っていうのは?
と:
を使って、先頭にある条件に一致すれば:
より前のもの、それ以外は:
より後ろのものと評価されるオペレーションです。いろんな言語に用意されています。下はPHPの例です。
$title = $level > 10 ? '超人' : '凡人';
$level
が10
を超えていたら「超人」それ以外は「凡人」という文字列が変数$title
に代入されます。
これをSmartyでやりたかったのです。
こんな感じを期待していました。
{$title = $level ? > 10 ? '超人' : '凡人'}
これ、できないみたいです。
→できるようになったようです!(senookenさん、ありがとうございます!コメント欄をご覧ください。)
長くなりますが{if}
と{else}
で頑張ります。
{if $level > 10}
{$title = '超人'}
{else}
{$title = '凡人'}
{/if}
長いな〜。3項演算子、使えたらいいのにな〜。
色々試してみて、わかってよかった、よかった。
Smartyも便利に使いたいです。
もう一つわかったこと。
3項演算子って英語ではconditional assignmentっていうんですね。
条件による代入。割り当てでもいいのかな。
用途を考えると言葉ってよくできているなって思いました。
「3項」では目的はわからないですね〜。
読んでくださってありがとうございます。
ではまた!
コメント
[Ternary operators · smarty\-php/smarty · Discussion \#660 · GitHub](https://github.com/smarty-php/smarty/discussions/660) に記載がある通り、Smarty v5から条件演算子は使用可能になったそうです。
ただし、 `{($foo) ? $var1 : $var2}` のように評価部分は丸括弧で囲む必要があるとか。
ありがとうございます!
https://smarty-php.github.io/smarty/stable/designers/language-basic-syntax/language-syntax-operators/#ternary
ありますね!使えるようになったんですね。
知識のアップデート大切ですね。
ありがとうございます!!