在Twig文件中将键和值合并为数组

3
我想在Twig文件中将键和值添加到数组中。但我面临以下问题:"Twig_Error_Syntax:哈希键必须是引号括起来的字符串或数字"。
{% set phoneCount = 0 %}
{% set phoneNumbers = {} %}
{% for currPhone in currBroker.phones %}
    {% if (currPhone.type == 'Work' or currPhone.type == 'Mobile') and phoneCount <= 2 and currPhone.number !='' %}
        {% set phoneCount = phoneCount + 1 %}                   
        {% set phoneNumbers = phoneNumbers|merge({ currPhone.type:currPhone.type }) %}
    {% endif %}
{% endfor %}
{{ phoneNumbers|print_r }}

我只需要将键和值合并到数组中的语法。 我尝试通过提供静态输入来实现,它能够工作。

{% set phoneNumbers = phoneNumbers|merge({ 'work':'(011)112-1233' }) %}

但是它对于动态输入不起作用。请帮忙!

1
一个有用的经验法则是,每当你需要应用一些显示逻辑超出非常简单的if语句时,就创建一个Twig扩展。即使你已经用Twig解决了问题,但维护它所需的努力并不值得。{% set phoneNumbers = currBroker.phones | extract_phone_numbers %}将为你节省很多麻烦。 - Cerad
1个回答

9

你需要在大括号中包装你的键:

{% set phoneNumbers = phoneNumbers|merge({ (currPhone.type) : currPhone.type }) %}

测试并可用的示例:

{% set currPhone = {type: 'test'} %}
{% set phoneNumbers = {} %}
{% set phoneNumbers = phoneNumbers|merge({ (currPhone.type) : currPhone.type }) %}
{% dump(phoneNumbers) %}

I get :

array:1 [▼
  "test" => "test"
]

1
不起作用。显示错误:Twig_Error_Syntax: 哈希键必须是引号括起来的字符串或数字(意外的标点符号"punctuation",值为"(")。 - Sachin I
我在我的答案中更新了一个可工作的示例。对于那段代码,我这边没有任何问题。 - Raphaël Malié

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接