Counting the number of elements in array

2020-05-21 07:44发布

I am looking to count the number of entries I have in an array in Twig. This is the code I've tried:

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

This however only produces the length of the string of one of the values in the array.

{{nc}} will produce an output of all the values of the array (there are 2) but I want the output to be just the number 2 (the count) and not all the information in the array.

标签: twig
3条回答
ら.Afraid
2楼-- · 2020-05-21 07:53

Just use the length filter on the whole array. It works on more than just strings:

{{ notcount|length }}
查看更多
够拽才男人
3楼-- · 2020-05-21 07:55

This expands on the answer by Denis Bubnov.

I used this to find child values of array elements—namely if there was a anchor field in paragraphs on a Drupal 8 site to build a table of contents.

{% 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 %}
查看更多
贪生不怕死
4楼-- · 2020-05-21 08:12

Best practice of getting length is use length filter returns the number of items of a sequence or mapping, or the length of a string. For example: {{ notcount | length }}

But you can calculate count of elements in for loop. For example:

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

{{ count }}

This solution helps if you want to calculate count of elements by condition, for example you have a property name inside object and you want to calculate count of objects with not empty names:

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

{{ countNotEmpty }}

Useful links:

查看更多
登录 后发表回答