我正在使用由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"] %}
答案 0 :(得分: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
答案 1 :(得分:0)
并非没有预处理。
您可以按照以下步骤对数据进行预处理以使其成为关联数组
$out_params = {};
foreach ($param in $parameters) {
$key = $param["key"];
$value = $param["value"];
$out_params[ $key ] = $value;
}
然后您可以使用out_params["my-key"]
直接访问这些值。
这种方法当然假设每个键都是唯一的。如果不是,则属于键的最后一个值将出现在展平的数组中。