如何在Twig中获取多维数组的值?

10

使用 var_dump 输出我的数组 $strs[$key][$id] 的结果如下:

array(2) {
    [0]=> array(4) {
        [8259]=> string(8260) "ouvrir 1"
        [8260]=> string(8261) "fichier 2"
        [8261]=> string(8262) "quitter 1"
        [8262]=> string(8263) "lire 2"
    }
    [1]=> array(4) {
        [8259]=> string(8260) "lancer 2"
        [8260]=> string(8261) "dossier 1"
        [8261]=> string(8262) "exit 1"
        [8262]=> string(8263) "lire 2"
    }
}

在我的看法中,我正在尝试从所有的 $key 中获取具有相同 $id 的所有字符串。类似于这样:
1-
ouvrir 1
lancer 2
2-
fichier 2
lancer 2

等等

我已经在我的 Twig 视图中尝试了这个:

{% for key,val in strs['key']['id']  %}
    {% if strs['key']['id'] is defined %}
     {{ key }} - <br/>      
     {{ val }}       
    {% endif %}   
{% endfor %}

我遇到了这个错误:
数组中的键 "0, 1" 中不存在键 "key"...
我做错了什么?我该如何得到我想要的结果?

1个回答

11

不要把这个逻辑放在你的视图中。只在你的视图中显示东西。
相反,在你的控制器中完成,并将结果传递给你的视图:

$result = array();
foreach ($arrays as $array) {
  foreach ($array as $key => $value) {
    $result[$key][] = $value;
  }
}
结果将是一个数组,其键为ID,值为属于相同ID的字符串数组。
要显示它:
{% for id, stringsById in results %}
  {{ id }}- <br />
  {% for string in stringsById %}
    {{ string }} <br />
  {% endfor %}
{% endfor %}

这正是我在控制器中获取 $result 数组的方法。我在这里尝试在视图中显示数组的内容。 - Wissem
2
我更新了我的答案,并加入了显示数组内容的代码。 - Samy Dindane
是的,那就是数组的全部内容。但是,我正在尝试获取每个$key对应的strs[id]。就像我问题中的例子:[8259]=> string(8260) "ouvrir 1"和[8259]=> string(8260) "lancer 2"共享相同的id(8259),但对于不同的键(0和1)。现在我想要的是在每个循环中分组并显示这两个。 - Wissem

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