计算数组中的元素数量

时间:2013-07-15 22:54:30

标签: twig

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

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

但是这只会产生数组中某个值的字符串长度。

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

3 个答案:

答案 0 :(得分:104)

只需在整个阵列上使用length filter即可。它的工作原理不仅仅是字符串:

{{ notcount|length }}

答案 1 :(得分:3)

这扩展了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 %}

答案 2 :(得分:1)

获取长度的最佳做法是使用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 }}

有用的链接: