Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Counting the number of elements in array

Tags:

twig

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.

like image 982
MikeHolford Avatar asked Jul 15 '13 22:07

MikeHolford


People also ask

How do you count the number of elements in an array in C++?

Using sort function() Calculate the length of an array using the length() function that will return an integer value as per the elements in an array. Call the sort function and pass the array and the size of an array as a parameter. Take a temporary variable that will store the count of distinct elements.


3 Answers

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

{{ notcount|length }}
like image 144
Paul Avatar answered Oct 05 '22 15:10

Paul


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 %}
like image 21
user3461392 Avatar answered Oct 05 '22 17:10

user3461392


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:

  • length
  • set
  • for
like image 26
Denis Bubnov Avatar answered Oct 05 '22 16:10

Denis Bubnov