for
¶
Loop over each item in a sequence. For example, to display a list of users
provided in a variable called users
:
1 2 3 4 5 6 |
<h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
|
Note
A sequence can be either an array or an object implementing the
Traversable
interface.
If you do need to iterate over a sequence of numbers, you can use the ..
operator:
1 2 3 |
{% for i in 0..10 %}
* {{ i }}
{% endfor %}
|
The above snippet of code would print all numbers from 0 to 10.
It can be also useful with letters:
1 2 3 |
{% for letter in 'a'..'z' %}
* {{ letter }}
{% endfor %}
|
The ..
operator can take any expression at both sides:
1 2 3 |
{% for letter in 'a'|upper..'z'|upper %}
* {{ letter }}
{% endfor %}
|
If you need a step different from 1, you can use the
range
function instead.1 以外のステップが必要な場合は、代わりに範囲関数を使用できます。
The `loop` variable ¶
Inside of a for
loop block you can access some special variables:
Variable | Description |
---|---|
loop.index |
The current iteration of the loop. (1 indexed) |
loop.index0 |
The current iteration of the loop. (0 indexed) |
loop.revindex |
The number of iterations from the end of the loop (1 indexed) |
loop.revindex0 |
The number of iterations from the end of the loop (0 indexed) |
loop.first |
True if first iteration |
loop.last |
True if last iteration |
loop.length |
The number of items in the sequence |
loop.parent |
The parent context |
1 2 3 |
{% for user in users %}
{{ loop.index }} - {{ user.username }}
{% endfor %}
|
Note
The loop.length
, loop.revindex
, loop.revindex0
, and
loop.last
variables are only available for PHP arrays, or objects that
implement the Countable
interface.
The `else` Clause ¶
If no iteration took place because the sequence was empty, you can render a
replacement block by using else
:
1 2 3 4 5 6 7 |
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% else %}
<li><em>no user found</em></li>
{% endfor %}
</ul>
|
Iterating over Keys ¶
By default, a loop iterates over the values of the sequence. You can iterate
on keys by using the keys
filter:
1 2 3 4 5 6 |
<h1>Members</h1>
<ul>
{% for key in users|keys %}
<li>{{ key }}</li>
{% endfor %}
</ul>
|
Iterating over Keys and Values ¶
You can also access both keys and values:
1 2 3 4 5 6 |
<h1>Members</h1>
<ul>
{% for key, user in users %}
<li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}
</ul>
|