For 循环的最后一次迭代,如果条件与树枝

Vla*_*nov 4 php loops for-loop if-statement twig

所以这只是我试图实现的一个例子。我正在遍历所有项目并只打印那些以 F 开头并用逗号分隔的项目。所以最后,循环将进行,例如 15 次迭代,但只会打印 5。我试图抓住最后一个将被打印,所以我可以删除逗号。我尝试使用过滤器 loop.last,但它只有在循环打印最后一个项目时才有效,但如果最后一个打印更早,它仍然带有逗号。

{% for item in items %}
  {% if item starts with 'F' %}
     {{ item }},
  {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我无法编辑项目中的任何内容。请帮忙,我已经被困在这个问题上有一段时间了。

Mat*_*teo 6

更简单的解决方案可能是for 语句添加条件并仅在不是第一次交互时才显示逗号(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 %}
Run Code Online (Sandbox Code Playgroud)

有关工作解决方案,请参阅此 twigfiddle

  • 哎呀,在这里我认为你不能在条件下使用 `loop.first` 因为在使用一个时不能使用 `loop.last`... +1 (2认同)

use*_*147 2

我测试了这个,所以我想我会提供一个答案:

{% 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(',') }}
Run Code Online (Sandbox Code Playgroud)