#arrays #json #loops #twig #counter
Вопрос:
Я новичок в JSON и Twig. Мне удалось преобразовать основные элементы из JSON в TWIG, но когда я добрался до частей массива, я застрял. Я пробовал разные вещи и не очень преуспел. Первый из них более сложный:
, поэтому я еще ничего не сделал с этим (это фрагмент кода, который до сих пор пытается что-то отобразить:
Freight List Item: <br>
Quantity: {{Result.FreightInformation.0.0.Item.Quantity}}<br>
Dim Type: {{Result.FreightInformation.0.0.Item.DimType}}<br>
Units: {{Result.FreightInformation.Item.0.0.Units}}<br>
Commodity: {{Result.FreightInformation.I0.0.tem.Commodity}}<br>
Weight: {{Result.FreightInformation.Item.0.0.Weight}}<br>
Length: {{Result.FreightInformation.Item.0.0.Length}}<br>
Width: {{Result.FreightInformation.Item.0.0.Width}}<br>
Height: {{Result.FreightInformation.Item.0.0.Height}}<br>
Class: {{Result.FreightInformation.Item.0.0.Class}}<br>
NMFC: {{Result.FreightInformation.Item.0.0.NMFC}}<br>
Hazmat: {{Result.FreightInformation.Item.0.0.Hazmat}}<br>
<br>
Второй менее сложный (поэтому я попробовал свои силы в этом), но есть довольно много элементов, которые были пройдены через цикл:
Я провел исследование, но я нахожусь в точке, где мне нужно ускорить это, так как человек, ожидающий, пока я завершу это, будет испытывать свое терпение.
Tracking Information<br>
{% for Result.TrackingInformation in Result.TrackingInformation %}
{% set counter = ( counter | default(0) ) 1 %}
<p>{{ counter ~ ' ). ' Result.TrackingInformation.i.Item }}</p>
Person: {% for i in 0..100 %} {{Result.TrackingInformation.i.Item.Person}} {% endfor %}<br>
Code: {% for i in 0..100 %} {{Result.TrackingInformation.i.Item.Code}} {% endfor %}<br>
Status: {% for i in 0..100 %} {{Result.TrackingInformation.i.Item.Status}} {% endfor %}<br>
Remarks: {% for i in 0..100 %} {{Result.TrackingInformation.i.Item.Remarks}} {% endfor %}<br>
Date: {% for i in 0..100 %} {{Result.TrackingInformation.i.Item.date}} {% endfor %}<br>
Time:{% for i in 0..100 %} {{Result.TrackingInformation.i.Item.time}} {% endfor %}<br>
{% endfor %}
Ответ №1:
Я собираюсь разбить этот ответ на две части, отражающие оба фрагмента
Фрагмент 1
Я бы предположил, что фрагмент, который вы написали здесь, правильный, однако twig
в нем нет этой записи, и он выдает странную ошибку
Ключ «Элемент» для массива с ключами «0» не существует.
Я открыл сообщение об этом поведении на GitHub, так как не могу разобраться в этой проблеме, так как ожидаю правильного результата.
Редактировать
Таким образом, причина, по которой точечная нотация не работает, заключается в том, что 0.0
часть анализируется как с плавающей точкой, поэтому единственный способ получить доступ к этим значениям — с помощью источника нотации массива
Однако вы также можете использовать обозначение массива twig
, чтобы получить правильный вывод здесь
{{ Result.FreightInformation[0][0].Item.Quantity }}
Фрагмент 2
В этой части вы пытаетесь использовать переменную для извлечения правильного индекса из массива. Однако для этого фрагмента вы не можете использовать точечную нотацию, так как twig
следующий фрагмент будет интерпретироваться как i
индекс массива, он не будет интерполировать i
его текущее значение
{{Result.TrackingInformation.i.Item.Person}}
Короче говоря, twig
скомпилировал бы это, чтобы $Result['TrackingInformation']['i']['Item']['Person']
У вас есть два решения для устранения этой проблемы
- Также используйте обозначение массива
{{Result.TrackingInformation[i].Item.Person}}
- Используйте функцию атрибута
{{ attribute(Result.TrackingInformation, i).Item.Person}}
Комментарии:
1. Спасибо вам за очень полезную информацию. Данные отображаются сейчас. Я пытаюсь перечислить их так, чтобы каждый элемент отслеживания перечислялся в отдельной группе (как показано в файле JSON) Прямо сейчас он отображается следующим образом: Человек: Автотрекер. Автоматический Трекер Автоматический Трекер Автоматический Трекер. Автоматический трекер. Автоматический трекер. Автоматический трекер. Автоматический трекер. Автоматический трекер. Автоматический трекер. Автоматический Трекер Автоматический Трекер. Автоматический трекер. Авто
2. Прямо сейчас он отображается следующим образом: <a href=» Not» rel=»nofollow noreferrer»> i52.683.myftpupload.com/wp-content/uploads/2021/07/… правильно</a>, но должно отображаться что-то вроде этого: </a><a href=» Correct» rel=»nofollow noreferrer»> i52.683.myftpupload.com/wp-content/uploads/2021/07/… Просмотр</a>(я могу сделать так, чтобы это выглядело хорошо позже)