Как получить доступ к значениям по ключу в Twig без цикла for - PullRequest
0 голосов
/ 14 июня 2019

Я работаю с источником данных, который управляется 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"] %}

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Я выяснил, как предварительно обработать массив в Twig с помощью функции merge (), например:

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

Это позволяет мне получить доступ к отдельным параметрам по ключу, например так:

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

, что дает:

fHpJN0dfgdfrjjvE

0 голосов
/ 14 июня 2019

Не без предварительной обработки.

Вы можете просто предварительно обработать данные, чтобы сделать их ассоциативным массивом, по линиям

$out_params = {};

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

Затем вы можете напрямую получить доступ к значениям, используя out_params["my-key"].

Этот подход, конечно, предполагает, что каждый ключ уникален.Если это не так, в вашем плоском массиве появится последнее значение, принадлежащее ключу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...