for
¶
按顺序循环每个项目。例如,要显示在名为 users
:
1 2 3 4 5 6 | <h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
|
注解
序列可以是数组,也可以是实现 Traversable
接口。
如果确实需要迭代一系列数字,可以使用 ..
操作员:
1 2 3 | {% for i in 0..10 %}
* {{ i }}
{% endfor %}
|
上面的代码片段将打印0到10之间的所有数字。
它也可以用于字母:
1 2 3 | {% for letter in 'a'..'z' %}
* {{ letter }}
{% endfor %}
|
这个 ..
运算符可以在两边使用任何表达式:
1 2 3 | {% for letter in 'a'|upper..'z'|upper %}
* {{ letter }}
{% endfor %}
|
这个 loop 变量¶
内部 for
循环块您可以访问一些特殊变量:
变量 | 描述 |
---|---|
loop.index |
循环的当前迭代。(1索引) |
loop.index0 |
循环的当前迭代。(0索引) |
loop.revindex |
循环结束时的迭代次数(1个索引) |
loop.revindex0 |
循环结束时的迭代次数(0个索引) |
loop.first |
如果第一次迭代为真 |
loop.last |
如果最后一次迭代为真 |
loop.length |
序列中的项目数 |
loop.parent |
父上下文 |
1 2 3 | {% for user in users %}
{{ loop.index }} - {{ user.username }}
{% endfor %}
|
注解
这个 loop.length
, loop.revindex
, loop.revindex0
和 loop.last
变量仅可用于PHP数组或实现 Countable
接口。
这个 else 条款¶
如果由于序列为空而未发生迭代,则可以使用 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>
|
遍历键¶
默认情况下,循环迭代序列的值。您可以使用 keys
过滤器:
1 2 3 4 5 6 | <h1>Members</h1>
<ul>
{% for key in users|keys %}
<li>{{ key }}</li>
{% endfor %}
</ul>
|
迭代键和值¶
您还可以访问键和值:
1 2 3 4 5 6 | <h1>Members</h1>
<ul>
{% for key, user in users %}
<li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}
</ul>
|