从Twig设置数组元素

fal*_*sky 119 php twig

如何从Twig中设置已存在的数组的成员?

我尝试下一步:

{% set arr['element'] = 'value' %}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

在......中意外的标记"标点符号"值"["("预期结束语句块")

Pau*_*aul 198

在Twig中没有很好的办法.但是,可以使用合并过滤器:

{% set arr = arr|merge({'element': 'value'}) %}
Run Code Online (Sandbox Code Playgroud)

  • 我正在寻找一种方法来定义动态变量键来代替''element'.我在下面找到了@ LivaX的答案.所以,它将是`{%set arr = arr | merge({(key):'value'})%}`. (16认同)

小智 76

我遇到了这个问题但是试图创建整数索引而不是像'element'这样的关联索引.

您还需要()使用合并筛选器来保护索引键:

{% set arr = arr|merge({ (loop.index0): 'value'}) %} 
Run Code Online (Sandbox Code Playgroud)

您现在可以添加自定义索引键 ('element'~loop.index0)

  • 使用`()`来保护密钥对我有用! (16认同)

ple*_*ock 19

如果初始化只需要:

{% set items = { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'unknown' } %}
Run Code Online (Sandbox Code Playgroud)

  • 这不是问题. (6认同)

ziz*_*jab 5

我已经尝试过@LivaX的答案,但它不起作用,合并键为数字的数组将不起作用(https://github.com/twigphp/Twig/issues/789)。

仅当键是字符串时才有效

我所做的是temp从初始数组 () 重新创建另一个数组 ( t) 并将键设为字符串,例如:

{% for key , value in t%}
{% set temp= temp|merge({(key~'_'):value}) %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

t键:0、1、2..

temp键:0_、1_、2_ ....