I have a section "Hotel Room" with a field "Sleeps" (number). There is no limit on the values that can be entered. On the frontend I want a list of all existing entered values for this field. So if I have these four entries:

  1. sleeps=2
  2. sleeps=2
  3. sleeps=8
  4. sleeps=10

I want an array [2, 2, 8, 10] to iterate over. Bonus points for unique/distinct values, but I'm well aware I can add a Twig filter to array_unique() it.

Is this possible using Craft's craft.entries lookups within Twig?

  • Do I understand this correctly if you want to pull in these vales and add them to an array that you can loop through in your template somewhere else? Dec 3, 2014 at 20:25

1 Answer 1


Getting that array is simple. Prepare an empty array, then loop through your entries and merge the "Sleeps" fields value to it.

To get your array with the unique values, you basically do the same but also save the value as the key on each iteration. If a key already exists in the array the key/value pair gets overwritten (→ good for you)!

There's a strange behaviour that setting custom numeric keys doesn't work with Twig, that's why I composed a string out of the value.

{# Prepare variables #}
{% set myArray1 = [] %}
{% set myArray2 = [] %}

{# Loop through entries of the "Hotel Room" section #}
{% for entry in craft.entries.section('hotelRoom') %}

    {% set value = entry.sleeps %}

    {% set myArray1 = myArray1|merge([value]) %}
    {% set myArray2 = myArray2|merge({ ('key' ~ value): value }) %}

{% endfor %}
  • Worked like a charm, thank you. Cunning idea using the key to avoid dupes!
    – Nick Dunn
    Dec 12, 2014 at 20:38
  • Using this method I've just hit an obvious problem. If the number of entries is high (~1500) Craft simply runs out of memory running this. Could we optimize this? Jan 29, 2016 at 23:49
  • @certainlyakey I don't think so, not without switching to PHP in a custom plugin. You might want to open a new question for this...
    – carlcs
    Jan 30, 2016 at 0:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.