<p>You could use Craft's <a href="http://buildwithcraft.com/docs/templating/filters#group" rel="nofollow"><code>group</code></a> filter:</p>

<pre><code>{% set files = craft.entries.section("downloads") | group('fileDate.year'} %}
{% set dropdown = false %}

{% for year, filesInYear in files %}
    {% if filesInYear|length &gt; 1 %}
        {% set dropdown = true %}
    {% endif %}
{% endfor %}
</code></pre>

CC BY-SA 3.0
2015-03-07T23:33:42.887Z
2015-03-07T23:33:42.887Z
Michael Rog
<p>This can be accomplished by creating an array of the entry years. Inside the loop that's building the array, a conditional checks if the year already exists in the array... if the year exists, a variable is set to TRUE which you can use in your conditional later down on the page. </p>

<pre><code>{% set files = craft.entries.section("downloads") %}
{% set dropdown = 0 %}
{% set yearArray = [] %}

{% for entry in files %}
    {% set year = entry.fileDate | date('Y') %}
    {% if year in yearArray %}
        {% set dropdown = 1 %}
    {% endif %}
    {% set yearArray = yearArray | merge([year]) %}
{% endfor %}

{% if dropdown %}
    Do this
{% else %}
    Do this
{% endif %}
</code></pre>

CC BY-SA 3.0
2015-03-05T23:10:29.347Z
2015-03-05T23:10:29.347Z
Anna_MediaGirl
<p>How do I loop through entries and set a variable if there are any duplicates in the data I'm checking? </p>

<p>In my case, I need to check if there are more than one entry per year. The variable I'm setting will be used in a conditional later in the template.</p>

<templating><forloop>
How do I set a variable in Twig if a value exists more than once in a loop?
# How do I set a variable in Twig if a value exists more than once in a loop?

(Asked by: username_0 on 2015-03-05)

How do I loop through entries and set a variable if there are any duplicates in the data I'm checking?

In my case, I need to check if there are more than one entry per year. The variable I'm setting will be used in a conditional later in the template.

**Tags:** templating, forloop

---

## 2 answers

### Answer by username_0 on 2015-03-05. Score: 11 | Accepted answer

This can be accomplished by creating an array of the entry years. Inside the loop that's building the array, a conditional checks if the year already exists in the array... if the year exists, a variable is set to TRUE which you can use in your conditional later down on the page. 
{% set files = craft.entries.section("downloads") %}
{% set dropdown = 0 %}
{% set yearArray = [] %}

{% for entry in files %}
    {% set year = entry.fileDate | date('Y') %}
    {% if year in yearArray %}
        {% set dropdown = 1 %}
    {% endif %}
    {% set yearArray = yearArray | merge([year]) %}
{% endfor %}

{% if dropdown %}
    Do this
{% else %}
    Do this
{% endif %}


---

### Answer by username_1 on 2015-03-07. Score: 4

You could use Craft's group filter:
{% set files = craft.entries.section("downloads") | group('fileDate.year'} %}
{% set dropdown = false %}

{% for year, filesInYear in files %}
    {% if filesInYear|length > 1 %}
        {% set dropdown = true %}
    {% endif %}
{% endfor %}


---

