相关文章推荐

Loop over each item in a sequence or a mapping. For example, to display a list of users provided in a variable called users :

<h1>Members</h1>
    {% for user in users %}
        <li>{{ user.username|e }}</li>
    {% endfor %}
    

A sequence or a mapping 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:

{% 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:

{% for letter in 'a'..'z' %}
    * {{ letter }}
{% endfor %}

The .. operator can take any expression at both sides:

{% for letter in 'a'|upper..'z'|upper %}
    * {{ letter }}
{% endfor %}

If you need a step different from 1, you can use the range function instead.

The `loop` variable

Inside of a for loop block you can access some special variables:

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:

{% for user in users %} <li>{{ user.username|e }}</li> {% else %} <li><em>no user found</em></li> {% endfor %}

Iterating over Keys

By default, a loop iterates over the values of the sequence. You can iterate on keys by using the keys filter:

<h1>Members</h1>
    {% for key in users|keys %}
        <li>{{ key }}</li>
    {% endfor %}

Iterating over a Subset

You might want to iterate over a subset of values. This can be achieved using the slice filter:

<h1>Top Ten Members</h1>
    {% for user in users|slice(0, 10) %}
        <li>{{ user.username|e }}</li>
    {% endfor %}
 
推荐文章