Twig 计算数组中的元素数

Twig 计算数组中的元素数,twig,Twig,我希望在Twig中计算数组中的条目数。这是我尝试过的代码: {%for nc in notcount%} {{ nc|length }} {%endfor%} 但是,这只生成数组中某个值的字符串长度 {{nc}将生成数组所有值的输出(有2个),但我希望输出仅为数字2(计数),而不是数组中的所有信息。只需在整个数组中使用。它不仅适用于字符串: {{ notcount|length }} 获取长度的最佳实践是使用过滤器返回序列或映射的项数,或字符串的长度。例如:{{notcount | leng

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

{%for nc in notcount%}
{{ nc|length }}
{%endfor%}
但是,这只生成数组中某个值的字符串长度

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

只需在整个数组中使用。它不仅适用于字符串:

{{ notcount|length }}

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

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

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

{{ count }}
如果您希望按条件计算元素的计数,例如,您在对象内部有一个属性
名称
,并且您希望计算具有非空名称的对象的计数,则此解决方案将有所帮助:

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

{{ countNotEmpty }}
有用链接:


这是对丹尼斯·布布诺夫的回答的扩展

我使用它来查找数组元素的子值,也就是说,如果Drupal8站点的段落中有一个锚字段来构建目录

{% 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 %}

那太完美了。我觉得很傻。哈哈,非常感谢@没问题。如果
notcount
不是数组,而是实现SPL可计数接口的类的对象(例如,这是条令的
\doctor\Common\Collections\ArrayCollection
),我很高兴能提供帮助,那么您可以使用
{{notcount.count}