J'ai ceci en PHP:
$units = array();
foreach ($popPorts as $port) {
$units[$port->getFrameNo()][$port->getSlotNo()][$port->getPortNo()] = $port->getPortNo();
}
Comment puis-je obtenir la même chose dans une brindille?
J'ai essayé jusqu'à présent:
{% set frames = [] %}
{% for row in object.popPorts %}
{% set frames[row.frameNo][row.slotNo][row.portNo] = row.portNo %}
{% endfor %}
{{ dump(frames) }}
Mais alors je reçois une erreur:
Jeton "ponctuation" inattendu de la valeur "[" ("fin du bloc d'instructions" attendue).
La sortie devrait être comme ceci:
array (size=3)
(frame) 1 =>
array (size=2)
(slot) 1 =>
array (size=4)
0 => (port) 26
1 => (port) 27
2 => (port) 28
3 => (port) 29
(slot) 5 =>
array (size=2)
0 => (port) 31
1 => (port) 34
(frame) 2 =>
array (size=1)
(slot) 3 =>
array (size=1)
0 => (port) 32
(frame) 3 =>
array (size=1)
(slot) 6 =>
array (size=1)
0 => (port) 33
Je crains que vous ne puissiez pas créer de tableaux comme celui-ci dans Twig. Même l'ajout de nouveaux éléments à un tableau est compliqué car vous devez créer un tableau pour le nouvel élément et le concaténer avec le tableau existant. Exemple:
{% set array = [] %}
{% for item in items %}
{% set array = array|merge([{ title: item.title, ... }]) %}
{% endfor %}
Je sais que cela a l'air horrible, mais tout cet inconvénient est fait exprès. Twig est destiné à créer des modèles, donc les fonctionnalités disponibles pour créer ou traiter des informations sont limitées à dessein. L'idée est que le traitement intensif des données devrait être fait avec PHP.
Autrement :
{% set array = {
'item-1': {
'sub-item-1': 'my-sub-item-1',
'sub-item-2': 'my-sub-item-2',
},
'item-2': {
'sub-item-1': 'my-sub-item-1',
'sub-item-2': 'my-sub-item-2',
},
'item-3': {
'sub-item-1': 'my-sub-item-1',
'sub-item-2': 'my-sub-item-2',
}
}
%}