如果条件与细枝一起在For循环上进行最后一次迭代

时间:2018-11-13 19:13:37

标签: php loops for-loop if-statement twig

因此,这只是我要实现的目标的一个示例。 我遍历所有项目并仅打印以F开头并以逗号分隔的项目,因此最后将进行循环,例如15次迭代,但仅打印5次。我尝试使用filter loop.last,但只有在循环打印最后一个项目时才起作用,但是如果最后一次打印是较早的,则仍然使用逗号。 >

{% for item in items %}
  {% if item starts with 'F' %}
     {{ item }},
  {% endif %}
{% endfor %}

我无法编辑项目中的任何内容。 请帮助,一段时间以来我一直对此感到困惑。

2 个答案:

答案 0 :(得分:3)

一个更简单的解决方案可以是for语句的Adding a condition,并且仅当不是第一次交互时才显示逗号(loop.last是在使用循环条件时定义的)。例如:

{% set items = ['Fitem1', 'item2', 'Fitem3', 'Fitem4', 'item5'] %}

{% for item in items if item starts with 'F'%}

{% if loop.first == false  %},{% endif%}
{{item}}

{% endfor %}

有关有效的解决方案,请参见this twigfiddle

答案 1 :(得分:1)

我对此进行了测试,所以我想提供一个答案:

{% set items = ['Fitem1', 'item2', 'Fitem3', 'Fitem4', 'item5'] %}
{% set newArray = [] %}
{% for item in items %}
  {% if item starts with 'F' %}
    {% set newArray = newArray|merge([item])  %}
  {% endif %}
{% endfor %}
{{ newArray|join(',') }}