web-dev-qa-db-fra.com

Compter le nombre d'éléments dans un tableau

Je cherche à compter le nombre d'entrées que j'ai dans un tableau dans Twig. C'est le code que j'ai essayé:

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

Cependant, cela ne produit que la longueur de la chaîne de l'une des valeurs du tableau.

{{nc}} produira une sortie de toutes les valeurs du tableau (il y en a 2) mais je veux que la sortie soit juste le nombre 2 (le nombre) et non toutes les informations du tableau.

53
MikeHolford

Utilisez simplement le filtre de longueur sur tout le tableau. Cela fonctionne sur plus que de simples chaînes:

{{ notcount|length }}
107
Paulpro

Ceci élargit la réponse de Denis Bubnov.

J'ai utilisé cela pour trouver les valeurs enfants des éléments d'un tableau, notamment s'il y avait un champ d'ancrage dans les paragraphes d'un site Drupal 8 pour créer une table des matières.

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

La meilleure pratique pour obtenir la longueur est d'utiliser length le filtre renvoie le nombre d'éléments d'une séquence ou d'un mappage, ou la longueur d'une chaîne. Par exemple: {{ notcount | length }}

Mais vous pouvez calculer le nombre d'éléments dans la boucle for . Par exemple:

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

{{ count }}

Cette solution est utile si vous souhaitez calculer le nombre d'éléments par condition. Par exemple, vous avez une propriété name à l'intérieur d'un objet et vous souhaitez calculer le nombre d'objets dont le nom n'est pas vide:

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

{{ countNotEmpty }}

Liens utiles:

1
Denis Bubnov