71

我正在计算我在 Twig 中的数组中的条目数。这是我尝试过的代码:

{%for nc in notcount%}
{{ nc|length }}
{%endfor%}

然而,这只会产生数组中值之一的字符串的长度。

{{nc}}将产生数组所有值的输出(有 2 个),但我希望输出只是数字 2(计数)而不是数组中的所有信息。

4

3 回答 3

150

只需在整个数组上使用长度过滤器。它不仅仅适用于字符串:

{{ notcount|length }}
于 2013-07-15T22:57:06.697 回答
6

这扩展了 Denis Bubnov 的答案。

我用它来查找数组元素的子值——即如果 Drupal 8 站点的段落中有一个锚字段来构建目录。

{% set count = 0 %}
{% for anchor in items %}
    {% if anchor.content['#paragraph'].field_anchor_link.0.value %}
        {% set count = count + 1 %}
    {% endif %}
{% endfor %}

{% if count > 0 %}
 ---  build the toc here --
{% endif %}
于 2018-02-15T20:38:08.320 回答
5

获取长度的最佳实践是使用length过滤器返回序列或映射的项目数,或字符串的长度。例如:{{ notcount | length }}

但是您可以计算for循环中的元素数。例如:

{% set count = 0 %}
{% for nc in notcount %}
    {% set count = count + 1 %}
{% endfor %}

{{ count }}

如果您想按条件计算元素的计数,此解决方案会有所帮助,例如,您name在对象中有一个属性,并且您想计算名称不为空的对象的计数:

{% set countNotEmpty = 0 %}
{% for nc in notcount if nc.name %}
    {% set countNotEmpty = countNotEmpty + 1 %}
{% endfor %}

{{ countNotEmpty }}

有用的链接:

于 2018-01-22T08:06:35.027 回答