twigでforの回数(index)とkey、valueを取得する方法をまとめた

twigでforの回数(index)とkey、valueを取得する方法をまとめたほそぼそとtwigネタをやってまいります。

まずは基本のループ処理ですね。

twigでforループの回数(index)を取得する方法

基本的には loop.indexというのを使用します。

そのほかにも便利なものがありますが、以下の通りです。

loop.index ループした回数(1から始まる)
loop.index0 ループした回数(0から始まる)
loop.revindex ループした回数(最後からカウント、1から始まる)
loop.revindex0 ループした回数(最後からカウント、0から始まる)
loop.first 最初の要素のときtrueを返す
loop.last 最後の要素のときtrueを返す
loop.length 配列の長さを返す
loop.parent ネストしてるループのとき、上階層のループ要素を取得

サンプル:twigでFizzBuzzを解く

では、FizzBuzz問題をtwigで書いてみます。

通常、以下の通りのようになります。


{% for i in range(1, 100) %}

 {% if i % 15 == 0 %} FizzBuzz

 {% elseif i % 5 == 0 %} Buzz

 {% elseif i % 3 == 0 %} Fizz

 {% else %} {{ i }}

 {% endif %}

{% endfor %}

loop.indexを使うとこうなる。


{% for i in range(1, 100) %}

 {% if loop.index % 15 == 0 %} FizzBuzz

 {% elseif loop.index % 5 == 0 %} Buzz

 {% elseif loop.index % 3 == 0 %} Fizz

 {% else %} {{ loop.index }}

 {% endif %}

{% endfor %}

「変数 i を宣言したんだから、使えよ」って感じですねぇ

ちなみに

range(1, 100) : 1から100までの数値が入った配列が出来ます。

これらの数値に対して、forループで取り出して、ひたすら条件分岐するだけです。

なお、 数値の配列の場合、

{% for i in range(1, 100) %} と {% for i in 1..100%} は同じ意味になります

あと、twigには「数値が割り切れるかどうか」を判定する関数があります。

好きな人はこちらの divisible by (意味:~で割り切れる)を使うのも良いでしょう。


{% if loop.index is divisible by(3) %}
Buzz
{% endif %}

twigで key, valueを取得する方法

こんな感じです。


{% for key, value in usernames %}
 {{ key }}:{{ usernames.value }}
{% endfor %}

まとめ

loop.indexは使いこなしてループ処理はサクッと書いてしまいましょう!

ですが、あまり複雑な処理をtwigでやってしまうと後々、改修で大変になったりするので、ほどほどにしましょうね~

シェアする

  • このエントリーをはてなブックマークに追加

フォローする