【问题标题】:How to access values by key in Twig without a for loop如何在没有 for 循环的情况下在 Twig 中按键访问值
【发布时间】:2019-10-29 08:09:01
【问题描述】:

我正在使用由 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"] %}

【问题讨论】:

    标签: php twig


    【解决方案1】:

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

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

    这使我可以像这样通过键访问各个参数:

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

    产生:

    fHpJN0dfgdfrjjvE

    【讨论】:

      【解决方案2】:

      并非没有预处理。

      您可以按照以下方式对数据进行预处理以使其成为关联数组

      $out_params = {};
      
      foreach ($param in $parameters) {
        $key = $param["key"];
        $value = $param["value"];
        $out_params[ $key ] = $value;
      }
      

      然后您可以使用out_params["my-key"] 直接访问这些值。

      这种方法当然假设每个键都是唯一的。如果不是,则属于该键的最后一个值将出现在您的展平数组中。

      【讨论】:

        猜你喜欢
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-26
        • 2019-09-02
        • 1970-01-01
        相关资源
        最近更新 更多