2013-07-15 4 views
40

में तत्वों की संख्या की गणना करना मैं Twig में किसी सरणी में प्रविष्टियों की संख्या की गणना करना चाहता हूं।सरणी

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

हालांकि यह केवल सरणी में मानों में से एक की स्ट्रिंग की लंबाई का उत्पादन: इस कोड मैं कोशिश की है है।

{{nc}} सरणी के सभी मानों का उत्पादन करेगा (2 हैं) लेकिन मैं चाहता हूं कि आउटपुट केवल संख्या 2 (गिनती) हो और सरणी में सभी जानकारी न हो।

उत्तर

73

संपूर्ण सरणी पर बस length filter का उपयोग करें। यह पर काम करता है बस तार की तुलना में अधिक:

{{ notcount|length }} 
+2

यह बिल्कुल सही था। मुझे निस्सार लगता है। हाहा बहुत बहुत धन्यवाद! – MikeHolford

+2

@ माइकहोल्फर्ड कोई समस्या नहीं। मैं खुश हूं कि मैं मदद कर सका – Paulpro

1

लंबाई होने का सबसे अच्छा अभ्यास length फिल्टर एक दृश्य या मानचित्रण, या एक स्ट्रिंग की लंबाई के आइटम्स की संख्या देता है का उपयोग करें। उदाहरण के लिए: {{ notcount | length }}

लेकिन आप for लूप में तत्वों की गिनती की गणना कर सकते हैं। उदाहरण के लिए:

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

{{ count }} 

यह समाधान में मदद करता है अगर तुम शर्त द्वारा तत्वों की गिनती गणना करना चाहते हैं, उदाहरण के लिए यदि आप एक संपत्ति name ऑब्जेक्ट के अंदर है और आप नहीं खाली नाम के साथ वस्तुओं की गिनती गणना करना चाहते हैं:

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

{{ countNotEmpty }} 

उपयोगी लिंक्स:

0

यह डेनिस Bubnov द्वारा उत्तर पर फैलता है।

मैंने इसे सरणी तत्वों के बाल मूल्यों को खोजने के लिए उपयोग किया- अर्थात् यदि सामग्री की एक तालिका बनाने के लिए ड्रूपल 8 साइट पर अनुच्छेदों में एंकर फ़ील्ड था।

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