2013-07-15 28 views
40

Ich möchte die Anzahl der Einträge in einem Array in Twig zählen. Dies ist der Code, den ich versucht habe:Die Anzahl der Elemente im Array zählen

Dies erzeugt jedoch nur die Länge der Zeichenfolge eines der Werte im Array.

{{nc}} erzeugt eine Ausgabe aller Werte des Arrays (es gibt 2), aber ich möchte die Ausgabe nur die Nummer 2 (die Anzahl) und nicht alle Informationen im Array sein.

Antwort

73

Verwenden Sie einfach die length filter auf dem gesamten Array. Es funktioniert auf mehr als nur Strings:

{{ notcount|length }} 
+2

Das war einfach perfekt. Ich fühle mich dumm. haha vielen Dank! – MikeHolford

+2

@MikeHolford Kein Problem. Es freut mich, dass ich helfen konnte – Paulpro

1

Best Practice der Länge bekommen ist length Filter gibt die Anzahl der Elemente einer Sequenz oder Mapping oder die Länge eines Strings verwenden. Zum Beispiel: {{ notcount | length }}

Aber Sie können die Anzahl der Elemente in for Schleife berechnen. Zum Beispiel:

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

{{ count }} 

Diese Lösung hilft, wenn Sie Anzahl der Elemente durch Bedingung berechnet werden sollen, zum Beispiel haben Sie eine Eigenschaft name innerhalb Objekts, und Sie wollen nicht mit leeren Namen Anzahl der Objekte berechnen:

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

{{ countNotEmpty }} 

Nützliche Links:

0

Dies erweitert die Antwort von Denis Bubnov.

Ich habe dies verwendet, um untergeordnete Werte von Array-Elementen zu finden - nämlich, ob es ein Ankerfeld in Absätzen auf einer Drupal 8-Site gab, um ein Inhaltsverzeichnis zu erstellen.

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