[Twig]使用可能な演算子まとめ

一般的に使用できる演算子を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を覚える本

変数や文字列を結合・連結する方法[Twig] | D-NET

変数や文字列を結合・連結する方法[Twig] | D-NET

[…] [Twig]使用可能な演算子まとめ […]

Comments are closed.