stevv
stevv

Reputation: 51

Find value in array and return with new from different array

Currently I have two arrays

{% set code = [AMS, EIN, RTM] %}
{% set city = [Amsterdam, Eindhoven, Rotterdam] %}

I would like to check if the value of {{airport}} exists in the first array and if it is code[0] I would like to change {{airport}} into the value of city[0]. Is this possible with Twig?

Upvotes: 1

Views: 34

Answers (2)

β.εηοιτ.βε
β.εηοιτ.βε

Reputation: 39294

You can loop over the code array:

{% for c in code %}
  {# ... #}
{% endfor %}

Documentation: https://twig.symfony.com/doc/2.x/tags/for.html

Then if the item does match:

{# ... #}
{% if airport == c %}
  {# ... #}
{% endif %}
{# ... #}

Documentation: https://twig.symfony.com/doc/2.x/tags/if.html

Replace the variable airport, at the same loop index:

{# ... #}
{% set airport = city[loop.index0] %}
{# ... #}

Documentation: https://twig.symfony.com/doc/2.x/tags/for.html#the-loop-variable

So, in full:

{% for c in code %}
  {% if airport == c %}
    {% set airport = city[loop. index0] %}
  {% endif %}
{% endfor %}

Running fiddle: https://twigfiddle.com/xflfas/2

Out of the scope note: your arrays would be better named cities and codes.
This way, when you loop over them, you end up with meaningful naming

{% set codes = ['AMS', 'EIN', 'RTM'] %} 
{% for code in codes %}
  {{ code }}
{% endfor %}

{# and #}

{% set cities = ['Amsterdam', 'Eindhoven', 'Rotterdam'] %} 
{% for city in cities %}
  {{ city }}
{% endfor %}

Upvotes: 1

Sukhee Daansuren
Sukhee Daansuren

Reputation: 50

Use {% if value in array %} to search from the first array and Twig's merge function to replace the value in the second array. See this https://twig.symfony.com/doc/2.x/filters/merge.html

Upvotes: 0

Related Questions