2015-02-13 4 views
1

Я пытаюсь создать хэш месяц дней (1..31) в веточке:Hash с номерами, как ключи

{% set days = {} %} 
{% for i in 1..31 %} 
    {% set days = days|merge({(i) : i}) %} 
{% endfor %} 

Так что я ожидал, чтобы иметь что-то вроде:

1 -> 1 
2 -> 2 
... 
31 -> 31 

Вместо этого он создает хэш начинается с 0:

{% for key, option in days %} 
    {{ key }} -> {{option }} 
    <br /> 
{% endfor %} 


0 -> 1 
1 -> 2 
    ... 
30 -> 31 

Я уверен, что есть более элегантный способ создать хэш я хочу. Также оценят некоторые объяснения неожиданного вывода. Thanks

ответ

0

Использование loop.index. Например,

{% for option in days %} 
    {{ loop.index }} - {{ option }} 
<br /> 
{% endfor %} 
+0

Это работает, однако я должен передать этот хэш макросу, который я не могу изменить, а макрос имеет ключ и значение цикла – braz

+1

Это происходит потому, что использование слияние (в Php array_merge - HTTP: //php.net/array_merge). Если вы используете цифровую клавишу, когда объединены ключи, первый ключ равен 0, второй 1 ... Не используйте числовые клавиши, такие как «_0», «_1» –

+0

«код {% set days = {}%} {% for i in 1..31%} {% set key = '_' ~ (i)%} {% set days = days | merge ({(key): i})%} {% endfor%} ' –

Смежные вопросы