BentCoder
BentCoder

Reputation: 12740

Creating an array within for loop with Twig

I'm trying to create an array and store values in it within for loop but failed so far. How can I do it with Twig?

I've read these but being new in Twig makes it hard to convert into my case.

PLAIN PHP LOGIC IS THIS:

foreach ($array as &$value)
{
   $new_array[] = $value;
}

foreach ($new_array as &$v)
{
   echo $v;
}

WHAT I'VE TRIED WITH TWIG:

{% for value in array %}
    {% set new_array = new_array|merge([value])  %}
{% endfor %}

{% for v in new_array %}
   {{ v }}
{% endfor %}

Upvotes: 10

Views: 25138

Answers (2)

bumerang
bumerang

Reputation: 1846

I have other solution for arrays in loop. This solution is letting you to make arrays like PHP:

$my_array[] = array('key_1' => $value1, 'key_2' => $value_2);

in this case:

{% set cars_details = [] %}
{% for car in cars %}
     <!-- This is the line of code that does the magic -->
    {% set car = car|merge({(loop.index0) : {'color': car.color, 'year': car.year} }) %}
{% endfor %}
{{ car|dump }}

Upvotes: 1

BentCoder
BentCoder

Reputation: 12740

Solved by following Vision's suggestion:

{% set brands = [] %}
{% for car in cars %}
    {% if car not in brands %}
        {% set brands = brands|merge([car]) %}
    {% endif %}
{% endfor %}

{% for brand in brands %}
   {{ brand }}
{% endfor %}

Also I'll take bartek's comment into consideration next time. This was one off.

Upvotes: 27

Related Questions