首页 > 解决方案 > 如何在没有 for 循环的情况下在 Twig 中按键访问值

问题描述

我正在使用由 GraphQL 驱动的数据源。它返回参数的键值对数组,其中参数的名称是键。不幸的是,它被设置为对象数组。例如:

"parameters": [
  {
    "key": "property.domain",
    "value": "informium.net"
  },
  {
    "key": "facebooook.url",
    "value": "https://www.facebooook.com/informium"
  },
  {
    "key": "springoh.url",
    "value": "https://greenrivervalley.fffo.com/list-widget.js"
  },
  {
    "key": "guitar.applicationId",
    "value": "fHpJN0dfgdfrjjvE"
  },
  {
    "key": "property.phone",
    "value": "(707) 735-7311"
  }
]

PHP/Twig 中有没有一种方法可以在每次我需要查找某些内容时通过键访问值而无需遍历该数组?我希望能够通过仅提供键来获取参数的值。例如:

{% set propDomain = data.parameters["property.domain"] %}

标签: phptwig

解决方案


我想出了如何使用 merge() 函数在 Twig 中预处理数组,如下所示:

{% set parametersHash = [] %}
{% for parameter in data.resolution.section.parameters %}
  {% set parametersHash = parametersHash|merge({(parameter.key): parameter.value}) %}
{% endfor %}

这允许我通过键访问各个参数,如下所示:

{{ parametersHash["guitar.applicationId"] }}

产生:

fHpJN0dfgdfrjjvE


推荐阅读