本文介绍了twig - 在 for 循环中构建数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

is it possible to iteratively fill a twig array with values?

{% for question in questions %}
{% set multipleChoiceArray = [] %}
    {% for multipleChoice in question.multipleChoiceAnswers %}
        {% set multipleChoiceArray = multipleChoiceArray|merge( multipleChoice.answerText )  %}
    {% endfor %}
{% endfor %}

the problem is here multipleChoiceArray|merge(multipleChoice.answerText)

when i try to pass an array for example with key = loop.index like

{% set multipleChoiceArray = multipleChoiceArray|merge({"loop['index']":"multipleChoice['answerText']"})  %}

it works but the array contains the strings "["loop['index']":"multipleChoice['answerText']"]"

when i try to pass variables like :

{% set multipleChoiceArray = multipleChoiceArray|merge({loop.index:multipleChoice.answerText})  %}

exception is : A hash key must be followed by a colon (:). Unexpected token "punctuation" of value "." ("punctuation" expected with value ":")

so i am not able to "push" a value "multipleChoice.answerText" into "multipleChoiceArray"

any hints how that is possible ?i just want to gather all possible answers and later check if answer is in that array and count sth up and display

解决方案

The argument of merge has to be an array or object to merge it with an existing one. So write it as an array with one element.

{% set multipleChoiceAnswerText = multipleChoice.answerText %}
{% set multipleChoiceArray = multipleChoiceArray|merge([multipleChoice.answerText])  %}

这篇关于twig - 在 for 循环中构建数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 10:18