一般的に使用できる演算子をTwigでも使用可能です。
プログラムに親しんでいる人なら憶測で記述できると思います。
ざっくりとまとめてみたいと思います。
算術演算子
+, -, /, %, //, *, **
の演算子が使用できます。
簡単な説明
+: 足し算 // {{ 1 + 1 }} is 2. -: 引き算 // {{ 3 - 2 }} is 1. /: 除算(割り算) // {{ 1 / 2 }} is {{ 0.5 }}. *: 乗算(掛け算) // {{ 2 * 2 }} is 4. %: 除算の余り // {{ 11 % 7 }} is 4. //: 除算後、四捨五入された整数を返す // {{ 20 // 7 }} is 2, {{ -20 // 7 }} is -3 **: 累乗、(左側に対して右側の数値分) // {{ 2 ** 3 }} is 8.
論理演算子
条件分岐(if文)などで使用します。
and, or, not,()
が使用できます。小文字で使用します。
&&
や||
は使用できません。
比較演算子
==, !=, <, >, >=, <=
一般的な比較演算子が使用可能です。
厳密等価演算子===
は使用不可です。代わりにis same as(value)
を使用します。
!==
はis not same as(value)
です。
そのほかの使用できる比較を下記に紹介します。
{% if 'foo' starts with 'f' %} {% endif %} {% if 'bar' ends with 'r' %} {% endif %} {% if phoneNumber matches '/^[\\d\\.]+$/' %} {% endif %}
上記matches
は下記記事でも紹介しています。正規表現と比較したい場合など便利です。
[Twig]条件分岐(if文)の使い方まとめ
その他の演算子
「in」 : 値が含まれているかチェックする
// returns true {{ 1 in [1, 2, 3] }} {{ 'cd' in 'abcde' }}
not
を使用して含まれていないことをチェックすることもできます。
{% if 1 not in [1, 2, 3] %}
「is」 : 右側で指定されたテストをする
Twigではよく使用します。下記は実際のテストのサンプルです。
// constant : 定数との比較 {% if product.status is constant('PRODUCT::PUBLISHED') %} exactly the same as PRODUCT::PUBLISHED {% endif %} // difined : 定義されているかどうか {% if foo is defined %} {% endif %} // null : nullかどうか {% if foo is null %} {% endif %} // empty : 変数や配列が空かどうか {% if foo is empty %} {% endif %} // divisible by() : 指定した数で割り切れるかどうか {% if loop.index is divisible by(3) %} {% endif %} // iterable : 変数が配列かオブジェクトであることをチェックする {% if foos is iterable %} {% endif %} // same as() : 厳密に同じかどうか {% if foo is same as('test') %} {% endif %} // even,odd : 偶数、奇数かどうか {% if foo is even %} {% endif %}
「|」 : filterを適用する
{{ name|lower }}
「..」 : 演算子の前後の値に基づいてシーケンスを作成
{% set numbers = 1..5 %} {{ dump(numbers) }} // result array:5 [▼ 0 => 1 1 => 2 2 => 3 3 => 4 4 => 5 ]
「~」 : 値を文字列に変換し、それらを連結
変数などを結合したりする場合に使います。
{% set name = 'tester' %} {{ "Hello " ~ name ~ "!" }} // result Hello tester!
「?:」 : 三項演算子
{{ foo ? 'yes' : 'no' }}
簡単に説明すると、fooがtrueの場合「yes」を返します。fooがfalseの場合「no」を返します。
「??」 : null合体演算子
{{ foo ?? 'no' }}
fooがnullでなく定義されている場合は「foo」の値を返します。それ以外の場合は、「no」を返します。
「#{expression}」 : 文字列の間に割り込んで式を挿入できます。
{{ "foo #{1 + 2} baz" }} // result foo 3 baz
以上、Twigで使用可能な演算子をまとめてみました。
Twigおすすめの書籍
Twigだけに特化した書籍は読んだことがないのですが、AmazonのKindleにありました。
これと同じくらいブログでまとめられたらと思います。
[…] [Twig]使用可能な演算子まとめ […]